十月CMS路由

时间:2017-11-08 10:36:05

标签: php routing octobercms

我尝试在OctoberCMS应用中配置路由。我在我的插件的Plugin.php文件中配置路由。 目前我的代码:

public function boot()
    {

        Validator::extend('numeric_for_repeater', function($attribute, $value, $parameters) {
            foreach ($value as $v)
            {
                $validator = Validator::make(
                    $v,
                    [
                        'stock_quantity' => 'sometimes|numeric',
                        'stock_votes_quantity' => 'sometimes|numeric',
                        'value' => 'sometimes|numeric',
                    ],
                    $parameters
                );
                if ($validator->fails())
                    return false;
            }
            return true;
        });

        \Route::get('/oferty/{id}', function ($id = null) {

            $theme =  Theme::getActiveTheme();
            $path = \Config::get('cms.themesPath', '/themes').'/'.$theme->getDirName();
            $this->assetPath = $path;
            $offer = new Offer();
        return \View::make(self::MAMF_PAGE_DIR . 'oferta.htm', ['offer' => $offer->getOfferById($id)]);

        });
    }

但是我收到了一个错误: View [.var.www.plugins.mamf.mamf2017..........themes.mamf2017.pages.oferta.htm] not found.因为默认情况下10月需要插件目录中的视图文件。 如何在插件目录之外渲染视图,例如themes路径中的app/themes/mamf2017/pages/oferta.htm

1 个答案:

答案 0 :(得分:0)

我猜 self :: MAMF_PAGE_DIR 是您的应用程序的完整基本路径。例如

<强>的/ var / WWW /虚拟主机/ octdev /主题/ responsiv平坦/

简而言之, \ View :: make 需要来自root的绝对路径

现在它将尝试查找带有october-cms配置扩展名的文件 .htm 。其他人是 .blade .htm.blade 等。

所以在你的情况下(视图)文件名是&#39; oferta.htm&#39; 那个。(点)被翻译成&#39; /&#39;路径分隔符所以只是不要使用它,只需使用 &#39; oferta&#39; ,这样它就会检查页面目录中的所有可能值

  • oferta.htm
  • oferta.blade
  • oferta.htm.balde

这个添加.htm是自动的,所以你只需要提供视图名称然后就会找到并自动工作

\Route::get('/oferty/{id}', function ($id = null) {

        $theme =  \Cms\Classes\Theme::getActiveTheme();
        $path = \Config::get('cms.themesPath', '/themes').'/'.$theme->getDirName();
        $this->assetPath = $path;
        $offer = new Offer();
        return \View::make(base_path() . $path . '/pages/' . 'oferta', ['offer' => $offer->getOfferById($id)]);

    });

这是经过测试和工作正常希望这会对你有所帮助。 如果它不起作用请发表评论。