Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 如何在OctoberCMS中呈现带有默认主题和控制器变量的cms页面?_Laravel_Controller_Routes_Views_Octobercms - Fatal编程技术网

Laravel 如何在OctoberCMS中呈现带有默认主题和控制器变量的cms页面?

Laravel 如何在OctoberCMS中呈现带有默认主题和控制器变量的cms页面?,laravel,controller,routes,views,octobercms,Laravel,Controller,Routes,Views,Octobercms,我想知道如何通过在控制器中执行函数的路由来呈现视图,或者在OctoberCMS中显示带有默认主题的页面 如果我有以下路线: Route::get('bransje', [ 'uses' => 'Ekstremedia\Cityportal\CPController@bransje' ]); 在我的控制器CPC中,我尝试了几件事,就像我以前对拉威尔所做的那样: public function bransje() { $stuff = Stuff::with('info');

我想知道如何通过在控制器中执行函数的路由来呈现视图,或者在OctoberCMS中显示带有默认主题的页面

如果我有以下路线:

Route::get('bransje', [
'uses' => 'Ekstremedia\Cityportal\CPController@bransje'
]);
在我的控制器CPC中,我尝试了几件事,就像我以前对拉威尔所做的那样:

public function bransje() {
    $stuff = Stuff::with('info');
    return View::make('cms::bransje')->with('stuff',$stuff);
}
但我似乎无法让它发挥作用,我尝试过在网上搜索,但很难找到答案。我找到了一个解决方法,那就是制作一个插件组件,然后我可以包含该组件并执行以下操作:

public function onRun()
{
    $this->eventen = $this->page['stuff'] = $this->stuff();
}

protected function stuff()
{
   return ...
}
有没有什么方法可以让我不用Cms来制作页面,而这些页面都包装在我的默认主题中?我试过了

返回视图::make('my-theme-name::page')

还有很多变种,但运气不好

我知道我也能做到:

==
public function onRun()
{
}

在我的cms页面的开头,但我不确定如何通过那里从我的插件控制器调用函数。

您可以通过在插件中使用绕过前端路由


完整的示例。

如果此答案仍然有用(适用于10月v434)

我有几乎相同的场景

我想要实现的是一种类似facebook页面和个人资料的路由

facebook.com/myprofile
facebook.com/mypage

首先,我在CMS中为每个场景创建一个页面(比如
catchpage.htm

然后a在我的插件routes.php的按钮上创建了一个catchall路由,它也不会干扰octobercms的内部工作

if (!Request::is('combine/*') && !Request::is('backend/*') && !Request::is('backend')) {

    // Last fail over for looking up slug from the database
    Route::get('{slug}/{slug2?}', function ($slug, $slug2 = null) {

       //Pretend this are our routes and we can check them against the database 
        $routes = ["bola", "sade", "bisi", "ade", "tayo"];

        if(in_array($slug, $routes)) {

            $cmsController = new Cms\Classes\Controller;
            return $cmsController->render("/catchpage", ['slug' => $slug]);

        }

        // Some fallback to 404
        return Response::make(View::make('cms::404'), 404);
    });
}
如果
Request::is
检查是十月在引擎盖下使用的所有资源的列表,请不要移除联合收割机,因为它是联合收割机路径。删除它,样式和脚本将不会渲染。此外,后端是指向后端的url,请确保提供后端和后端/*

最后不要忘记
返回Response::make(View::make('cms::404'),404)如果资源无用

不过,您可以将所有这些都放在控制器中


如果有人有更好的解决方法,请告诉我们。

虽然指向外部资源的链接可能有用,但也请在您的答案中添加要点。其他网站的链接可能会随着时间的推移而中断。谢谢你的回答,这是一个很好的视频,但它没有回答我的问题。他回来了,只是一个“你好世界”。我想要的是,假设我用我的默认主题在cms中创建一个页面,“页面”。然后,我想创建一个执行函数的路由,它将以与“mysite.com/page”相同的方式呈现该页面,但添加了将对象发送到视图中的选项。好的,那么您需要自定义路由返回的CMS页面(处理过的Twig.htm文件?)?问题是你为什么会这么做——CMS免费提供给你的功能是一样的。也许您还需要其他东西-在发送或类似之前修改响应的全局事件挂钩?
(新Cms\Classes\Controller)->render()
正是我所需要的!在自定义路由和控制器中呈现所选页面。