Maison >cadre php >Laravel >Explication détaillée de la façon de configurer et d'exécuter le système de forum Flarum dans l'environnement de développement Mac Laravel Valet

Explication détaillée de la façon de configurer et d'exécuter le système de forum Flarum dans l'environnement de développement Mac Laravel Valet

藏色散人
藏色散人avant
2020-04-28 15:03:502156parcourir

La colonne tutorielle suivante de laravel vous présentera la méthode d'implémentation de configuration et d'exécution du système de forum Flarum dans l'environnement de développement Mac Laravel Valet. J'espère que cela vous sera utile. aux amis dans le besoin !

Explication détaillée de la façon de configurer et d'exécuter le système de forum Flarum dans l'environnement de développement Mac Laravel Valet

Laravel Valet est un environnement de développement minimaliste fourni pour Mac OS X. Cependant, la configuration de Valet est quelque peu différente des serveurs HTTP traditionnels (Apache, Nginx, etc.). Pour réécrire les URL dans les fichiers de configuration, Valet définit la gestion des URL de manière modulaire dans les classes PHP. Les structures de répertoires par défaut de Flarum et de Laravel étant différentes, nous devons définir sa configuration d'accès dans Valet.

Il existe un fichier de configuration par défaut SampleValetDriver.php dans le répertoire ~/.valet/Drivers, qui contient trois méthodes : serve, isStaticFile et frontControllerPath. Nous devons maintenant configurer notre propre fichier de configuration FlarumValetDriver.php, et suivre ces trois méthodes pour écrire notre propre extension de pilote :

cp SampleValetDriver.php FlarumValetDriver.php

Ouvrez FlarumValetDriver.php, réécrivez d'abord la méthode serve, dans laquelle nous devons spécifier Valet Que le répertoire d'application Flarum correspondant sous le répertoire racine Web correspondant (le mien ici est Flarum, s'il est différent, vous devez le remplacer par votre propre répertoire d'application Flarum) existe, cela est quelque peu similaire à la définition de racine dans Nginx :

public function serves($sitePath, $siteName, $uri){
    return is_dir($sitePath.'/vendor/flarum')
        && file_exists($sitePath.'/flarum');
}

Ensuite, dans La méthode isStaticFile détermine si l'URL donnée pointe vers un fichier statique et que le fichier statique existe. Ceci est similaire à la façon dont nous définissons l'accès aux fichiers statiques dans nginx :

public function isStaticFile($sitePath, $siteName, $uri){
    if ($this->isActualFile($staticFilePath = $sitePath.$uri)) {
        return $staticFilePath;
    }

    return false;
}

Enfin, réécrivez. la méthode frontControllerPath, qui est similaire à mod_rewrite dans Apache Et try_uri dans Nginx, on peut ici réécrire le chemin d'accès à la requête :

public function frontControllerPath($sitePath, $siteName, $uri)
{
    if (strpos($uri,'/admin') === 0) {
        return $sitePath.'/admin.php';
    }
    if (strpos($uri,'/api') === 0) {
        return $sitePath.'/api.php';
    }

    return $sitePath.'/index.php';
}

Le résultat final est le suivant, on le sauvegarde sous ~/.valet/Drivers :

<?php

class FlarumValetDriver extends ValetDriver
{
    /**
     * Determine if the driver serves the request.
     *
     * @param  string  $sitePath
     * @param  string  $siteName
     * @param  string  $uri
     *
     * @return bool
     */
    public function serves($sitePath, $siteName, $uri)
    {
        return is_dir($sitePath.&#39;/vendor/flarum&#39;) && file_exists($sitePath.&#39;/flarum&#39;);
    }

    /**
     * Determine if the incoming request is for a static file.
     *
     * @param  string  $sitePath
     * @param  string  $siteName
     * @param  string  $uri
     *
     * @return string|false
     */
    public function isStaticFile($sitePath, $siteName, $uri)
    {
        if ($this->isActualFile($staticFilePath = $sitePath.$uri)) {
            return $staticFilePath;
        }
        return false;
    }

    /**
     * Get the fully resolved path to the application&#39;s front controller.
     *
     * @param  string  $sitePath
     * @param  string  $siteName
     * @param  string  $uri
     *
     * @return string
     */
    public function frontControllerPath($sitePath, $siteName, $uri)
    {
        if (strpos($uri,&#39;/admin&#39;) === 0) {
            return $sitePath.&#39;/admin.php&#39;;
        }
        if (strpos($uri,&#39;/api&#39;) === 0) {
            return $sitePath.&#39;/api.php&#39;;
        }

        return $sitePath.&#39;/index.php&#39;;
    }
}

comme ça Vous pouvez désormais accéder normalement à toutes les routes de Falrum. Si une erreur d'accès est signalée :

Call to undefined method FlarumValetDriver::isActualFile() in /Users/sunqiang/.valet/Drivers/FlarumValetDriver.php on line 29

C'est parce que Valet n'a pas été mis à niveau vers la dernière version. Exécutez simplement la commande suivante pour mettre à niveau Valet :

composer global update

Adresse d'origine : https. ://xueyuanjun.com/post/5679

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer