【问题标题】:Best way to remove header and footer for a particular page in YII在 YII 中删除特定页面的页眉和页脚的最佳方法
【发布时间】:2023-03-08 08:19:01
【问题描述】:

我遇到了一种情况,我不需要为 yii 中的特定页面显示header(它有导航栏和徽标)andfooter`。有许多调整可以做到这一点。例如,检查布局不会加载页眉和页脚的特定操作..

yii 是否为这个问题提供了任何可靠的东西?

我们有$this->layout->unsetHeader();? 或$this->layout->unsetFooter();? 之类的吗

我不想检查布局文件来解决这个问题。

我们将不胜感激。

【问题讨论】:

    标签: php html css layout yii


    【解决方案1】:

    我没有找到你想要的功能。

    我认为最好和最简单的方法是使用适当的布局,并以这种方式在控制器中调用它

    public function actionYourView()
       {
    
        $this->layout='yourLayout';
        $this->render('yourView');
    }
    

    通过这种方式,您不需要在布局内部检查页眉和页脚,逻辑都在控制器中。并且分配适当的布局很容易。

    【讨论】:

      【解决方案2】:

      你可以设置$this->layout为false;

      $this->layout = false
      $this->render('view', $data);
      

      这也可以使用renderpartial来实现

      $this->renderPartial('view', $data);
      

      上述方法将显示一个页面段,而不是页面布局的其他项目(例如包含 javascript 和 css 以及 HTML 标题)。

      如果您希望布局文件中包含逻辑,则可以从控制器传递变量。

      $this->layout = 'mytheme';
      $this->show_css = true;
      $this->render('view', $data);
      

      在你的布局中

      <html>
      <body>
         <?php if ($this->show_css) { ?>
         <div id="menu">
           <ul><li>Menu Option 1</li><li>Menu Option 2</li></ul>
         </div>
         <?php } <?
         <div id="body">
            <?php echo $this->content; ?>
         </div>
         <div id="footer">
         </div>
      </body>
      </html>
      

      如果您不想在控制器中使用变量。请改用全局变量。

         Yii::app()->params['show_menu'] = true;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-29
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        相关资源
        最近更新 更多