Определите маршрут Laravel или Wordpress в индексном файле

У меня есть приложение, которое использует Laravel в сочетании с Wordpress.

Теперь у Laravel есть маршруты, а также wordpress.

Я хочу проверить в public / index.php, соответствует ли URL-адрес маршруту Laravel или маршруту Wordpress.

Итак, что-то вроде этого работает, но я хочу динамически заполнить массив $ laravelRoutes, но на этом уровне нет подключения к базе данных.

Как я могу этого добиться правильно?

общедоступный / index.php

$actual_link = "$_SERVER[REQUEST_URI]";
$parts = explode('/',$actual_link);

$laravelRoutes = ['admin','rest'];
if (isset($parts[1])&& in_array($parts[1],$laravelRoutes) ){
    /**
     * Laravel - A PHP Framework For Web Artisans
     */
    require __DIR__.'/../bootstrap/autoload.php';
    $app = require_once __DIR__.'/../bootstrap/app.php';
    $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
    $response = $kernel->handle(
        $request = Illuminate\Http\Request::capture()
    );
    $response->send();
    $kernel->terminate($request, $response);
}else{
    /*
     // Loads the WordPress Environment and Template
    */
    define('WP_USE_THEMES', true);
    require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' );
}

Как можно "совместить" laravel и wordpress? У каждого из них есть собственный файл записи index.php. Конечно, вы можете включить одно в другое. Но такое чувство, что вы могли создать небезопасного монстра Франкенштейна.

online Thomas 04.07.2018 14:30

@ThomasMoors простой, используйте Laravel и поместите wordpress в папку wp / в общедоступную, и она работает, нет MONSTER: P.

Bas 04.07.2018 14:39
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
1
2
473
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Что насчет этого решения:

в web.php

// laravel route 1

// laravel route 2

Route::any('/{wordpress_slug}', function ($wordpress_slug) {

    require_once('wordpress/index.php');

});

Таким образом, все легко делать из Laravel.

Это действительно работает? Любые зависимости, такие как lumenpress / laravel?

ScraperDave 29.08.2020 16:54

@ScraperDave, это работает, да, потому что require - это просто php

online Thomas 29.08.2020 20:11
Ответ принят как подходящий

Отвечать: Я получаю маршруты из Laravel и проверяю это.

$actual_link = "$_SERVER[REQUEST_URI]";
$parts = explode('/',$actual_link);

$laravelRoutes = ['zcalendar','rest'];
if (isset($parts[1])&& in_array($parts[1],$laravelRoutes) ) {
    /**
     * Laravel - A PHP Framework For Web Artisans
     */
    require __DIR__ . '/../bootstrap/autoload.php';
    $app      = require_once __DIR__ . '/../bootstrap/app.php';
    $kernel   = $app->make(Illuminate\Contracts\Http\Kernel::class);
    $response = $kernel->handle(
        $request = Illuminate\Http\Request::capture()
    );

    $app        = app();
    $routes     = $app->routes->getRoutes();
    $exceptions = ['{uri}', 'home', '/'];
    foreach ($routes as $route) {
        if (in_array($route->uri, $exceptions)) {
            continue;
        }
        $routePart = explode('/', $route->uri);
        if ($parts[1] == $routePart[0]) {
            $response->send();

            $kernel->terminate($request, $response);
        }
    }
}else{
    /*
     // Loads the WordPress Environment and Template
    */
    define('WP_USE_THEMES', true);
    require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' );
}

Другие вопросы по теме