1

我正在开发基于 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,每个请求都会发送到它,它将处理页面和布局的加载。
  • 还有两个带有干净网址的设置。?

而已。

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

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

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

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

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

希望很容易理解我想要实现的目标。任何帮助是极大的赞赏。

4

1 回答 1

1

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

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

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

class ControllerName extends Controller
{
    public $layout = '//layout path';
于 2013-03-07T10:13:48.263 回答