Проблемы с загрузкой тонких страниц

0

Поэтому после исправления усов и персов Apache я столкнулся с проблемой, когда сайт загружает индексную страницу, но любую страницу после нее (то же самое место index.html)/страницы, поскольку она не загружается.

Ниже вы можете увидеть index.php для Slim, чтобы сделать это. Я не могу понять, почему индексная страница будет загружаться просто отлично, но никакая другая страница не загрузится. Если вы можете указать мне в правильном направлении, тогда это будет очень признательно.

Примеры:

Конечный пользователь > myexample.com/

Местоположение > myexample.com/pages/index.html

Вышеизложенное прекрасно работает, но если вы посмотрите ниже, вы сможете понять мою проблему.

Конечный пользователь > myexample.com/info

Местонахождение > myexample.com/pages/info.html

Конечный пользователь - это то, что вы видите на сайте, но местоположение - это место, где находятся файлы. Спасибо заранее, Люк.

<?php

// Load up composer autoload, and instantiate the application.
require 'vendor/autoload.php';

$app = new \Slim\Slim;

// Register a singleton of the Mustache engine, and tell it to cache
$app->container->singleton('mustache', function () {
    return new Mustache_Engine(array(
        'cache' => 'storage',
        'loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__) . '/pages', array('extension' => '.html'))
    ));
});

// Helper function to render templates
function renderTemplate($name, $data = array()) {
    global $app;

    if (file_exists('config.php')) {
        $data = (require 'config.php');
    }

    $data += array(
        'resourceUri' => $app->request->getResourceUri() ?: 'index',
        'request' => $app->request
    );

    return $app->mustache->loadTemplate($name)->render($data);
}

// Loads a page by the given name/path
function loadPage($path) {
    global $app;

    // Set up the base path
    $f = 'pages/' . $path;

    if (file_exists($f . '.html')) {
        // If there an HTML file, render the mustache template
        return renderTemplate($path . '.html');
    } elseif (file_exists($f . '.php')) {
        // If there a PHP file, return it
        return (require $f . '.php');
    } elseif ($path != '404') {
        // Otherwise, go get the 404 page
        return loadPage('404');
    } else {
        // But if the user doesn't have a 404 page made, return a plain 404
        $app->halt(404);
    }
}

// Index page
$app->get('/', function () use ($app) {
    echo loadPage('index');
});


// Route to everything else
$app->get('/.*?', function () use ($app) {
    // Get the current request path
    $path = $app->request->getResourceUri();

    // Make sure the user isn't trying to escape and do nasty things
    if (!preg_match('/^[A-z\/\-\_]+$/', $path)) {
        echo loadPage('404');
    }

    // Send the page off to get loaded
    echo loadPage($path);
});
$app->run();
  • 0
    Я попытался несколько попыток исправить это, но я потерян здесь. Какие-либо предложения?
Теги:
slim
mustache

1 ответ

1
Лучший ответ

Я думаю, вы обнаружите, что ваша проблема связана не с Slim, а с пользовательскими функциями, которые вы написали, чтобы Slim загружал шаблоны Mustache.

Я настоятельно рекомендую удалить эти функции и использовать пользовательский вид Slim Mustache, представленный в каталоге представлений репозитория Slim-Extras. В этом случае любые проблемы с Slim можно легко диагностировать, поскольку для отладки не будут выполняться настраиваемые функции.

ПРИМЕЧАНИЕ. Хотя репозиторий Slim-Extras устарел в пользу репозитория Slim-Views, пользовательский вид Mustache (который не попал в репозиторий Slim-Views) должен работать нормально.

Для справки см. Раздел " Пользовательские виды " документации Slim.

ОБНОВЛЕНИЕ: я использовал библиотеку Dearon Slim Mustache для интеграции с Slim View в новом приложении my и Justin Hileman. PHP-реализация Mustache. Оба они очень рекомендуются и просты в установке и настройке. Удачи!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню