【问题标题】:How to setup site/domain controller for a requested dynamic page with Yii如何使用 Yii 为请求的动态页面设置站点/域控制器
【发布时间】:2013-03-07 10:03:47
【问题描述】:

我正在开发一个基于 cms 的 Yii 应用程序。我最近完成了后端的页面,现在可以从数据库中获取页面。

问题从获取请求的 url 并呈现动态布局开始。

解决此问题的最佳方法是什么?比如使用起始站点/域控制器,我该如何设置?

使用 CMenu 进行渲染在模板中运行良好。菜单显示在前端。这是我目前使用的菜单链接示例,例如 /home 和 /company/products。它使用干净的网址。

<ul id="yw0">

<li class="active"><a href="/home">Home</a></li>
<li><a href="/about_us">About us</a></li>
<li><a href="/company">Company</a></li>

    <ul>
        <li><a href="/company/products">Products</a></li>
        <li><a href="/company/services">Services</a></li>
    </ul>

<li><a href="/contact">Contact</a></li>

</ul>

但这是领先一点。布局需要从后端的特定页面动态加载。每个页面都可以有不同的布局。数据库中有一个用于此的列。因此例如 url: "http://example.com/home" 需要加载 'protected/views/layouts/main.php'

目前,诸如“http://example.com/company/products”之类的链接不会去任何地方。这很明显,因为链接不存在并且是动态创建的。

我想我需要做两件事:

  • 创建一个 startController,每个请求都会发送到该控制器,它将处理页面和布局的加载。
  • 还有两个带有干净 URL 的设置。?

就是这样。

我可以想象这不是很多工作。但这让我很头疼。

尤其是干净的网址。他们总是让我有点困惑。

index.php?r=site/index 将转到 siteController 和操作索引。

但这不是我想要的。我还尝试设置“urlManager”,但它转到了一个控制器和一个动作。喜欢页面/默认/视图/id/。但是我不想执行操作,而只是启动控制器从数据库加载(下一个)请求的页面(具有不同的布局)。

我需要在配置文件 main.php 的某处设置干净的 url

希望很容易理解我想要实现的目标。非常感谢任何帮助。

【问题讨论】:

    标签: yii frontend clean-urls entry-point


    【解决方案1】:

    您可以在控制器中设置布局,也可以像这样在单个控制器的每个操作中设置不同的布局。

    public function actionActionname()
    {
        $this->layout = 'front_layout';
        //Do the actions
        $this->render('renderVariable');
    }
    

    对于完整的控制器布局,您可以这样设置:

    class ControllerName extends Controller
    {
        public $layout = '//layout path';
    

    【讨论】:

    • 感谢您的回复。问题是在控制器中使用代码设置布局并不是真正动态的。但主要问题是如何制作启动控制器。入口控制器。和干净的网址。我再次尝试了网址管理器。它现在转到: yiitest/frontend/index.php/home 。如您所见,它使用数据库中的主 URL。但我得到 error404 无法解决请求“家”。但是我如何以及在哪里设置入口控制器。 “protected/controllers/”中的 SiteController 和 pageController 不会被调用。编辑:抱歉第一次使用stackoverflow
    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 2017-12-28
    • 2016-09-09
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 2013-10-26
    相关资源
    最近更新 更多