因此,在修复了胡子和Apache烫发之后,我现在遇到了一个问题,该站点将加载索引页面,但是此页面之后的任何页面都位于(无法加载)/ pages中(位于index.html的同一位置)。

您可以在下面看到的是Slim的index.php 我真的不明白为什么索引页会很好地加载,但没有其他页会加载。 如果您能指出正确的方向,那将不胜感激。

例子:

最终用户 > 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's an HTML file, render the mustache template
        return renderTemplate($path . '.html');
    } elseif (file_exists($f . '.php')) {
        // If there's 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();

===============>>#1 票数:1 已采纳

我认为您会发现问题不在于Slim,而在于您编写的允许Slim加载Mustache模板的自定义函数。

我强烈建议删除这些功能,并使用Slim-Extras repoviews目录中提供的自定义Slim Mustache视图 到那时,可以轻松诊断出Slim的任何问题,因为不会调试任何自定义功能。

注意 :虽然不建议使用Slim-Extras存储库,而推荐使用Slim-Views存储库,但是自定义的Moustache视图(尚未加入Slim-Views存储库) 应该可以正常工作。

作为参考,请参阅Slim文档的“ 自定义视图”部分。

更新 :我一直在使用Dearon的Slim Mustache库与我的新应用程序中的Slim View集成以及Justin Hileman的Mustache的PHP实现 强烈推荐两者,并且易于安装和配置。 祝好运!

  ask by Luke Brown translate from so

未解决问题?本站智能推荐:

1回复

未找到苗条框架页面

我不明白,这不是我第一次在苗条的环境下启动项目,但是我有一个无法解释的错误。 我的资料夹: 我创建了“公共”文件夹 就像医生说的那样,我在根目录中创建2 .htaccess: 在公用文件夹中: 这是我在公用文件夹中的index.php: 如果我尝试转
3回复

修剪.htaccess静态文件问题

这是我的结构: 的.htaccess 我的问题是当我尝试加载时: 从index.html它给了我404 。 为什么会这样?
2回复

Localhost不要重新加载php脚本

我在PHP中有一个脚本,甚至保存并尝试在不同的浏览器中执行它,因为我所做的每一次更改似乎都不是实时的,因此似乎已被缓存。 编辑2我正在我的服务器上尝试它,它工作正常,如果我更改文件,网络照常更改。 我的服务器与apache2完全一样,在本地运行的是Debian。 编辑我试图删除$
1回复

Slim 3和Stripe API兼容性问题

我使用Slim 3启动了一个Web应用程序。我去添加Stripe API,并收到了Slim Application错误消息。 我删除了Stripe API代码,错误消失了。 )); 我已经用Google搜索了几件事,但仍然没有找到问题的根源。 我怀疑\\Stripe\\是罪魁祸
2回复

超薄3自动加载器

我是苗条框架的新手,无法弄清楚如何使用自动加载器自动加载我的类。 我创建了一个app/models/myclass.php但是当我尝试使用它时,我得到了一个未找到的类。 我不确定哪种方法是自动加载类,或者我应该使用的命名方式。 我应该通过composer.json以某种方式这样做吗?
1回复

超薄显示404错误页面

我正在尝试在Mac上的XAMPP或MAC OS上的本机Apache Server上测试Slim,但任何人都可以使用。 遵循代码: 看一下GET函数的回调,只显示H1文本。 我的.htaccess内容: 我没有更改在Slim网站上获得的原始文件中的任何内容,并在浏览器上始终
1回复

如何在HTML页面中包含苗条的api?

我创建了一个苗条的api。 它获取数据库项目并显示它。 现在如何将其包含在html页面中? 这是api路线 这是我要在其中插入api的html页面。
2回复

使用post方法的苗条框架登录页面身份验证

我是Slim框架的新手,我想将我的代码从HTML传递到使用Slim框架的另一个PHP: 这是我的login_process代码 这段代码在get方法中使用时有效,但是让我出错,不允许使用错误方法,方法必须是POST方法的发布之一。 我希望有人来指导我。 提前致谢
1回复

超薄应用程序自动加载

我是REST和Slim应用程序的新手。 我无法自动加载某些课程: 类型:RuntimeException消息:Callable UserController不存在文件:/var/www/fdes/vendor/slim/slim/Slim/CallableResolver.php
1回复

超薄框架htaccess

我正在使用Slim框架,htaccess如下所示: 因此所有请求都发送到index.php,然后在其中路由路径。 我的网站上有一些类别页面,例如: 我希望也可以通过以下操作访问这些类别: 请帮助我编辑htaccess以实现此目的。 我发现这个问题几乎可以为我解决,