Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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
CodeIgniter嵌套控制器?_Codeigniter_Nested_Controllers - Fatal编程技术网

CodeIgniter嵌套控制器?

CodeIgniter嵌套控制器?,codeigniter,nested,controllers,Codeigniter,Nested,Controllers,我是CodeIgniter的新手,希望我的问题能有一个简单的答案 我有一个网站,有两个菜单项menuA、menuB和menuC。 我用控制器中的一个主控制器index、menuA、menuB和menuC对其进行了建模。被调用的函数设置会话值currentMenu,并包括页眉、X、页脚。其中X取决于调用的函数。标题然后亮起choosen菜单 在我的webapp中的menuC Account settings中,我希望有一个不同的控制器来控制AccountSettings/NotLoggedIn的子

我是CodeIgniter的新手,希望我的问题能有一个简单的答案

我有一个网站,有两个菜单项menuA、menuB和menuC。 我用控制器中的一个主控制器index、menuA、menuB和menuC对其进行了建模。被调用的函数设置会话值currentMenu,并包括页眉、X、页脚。其中X取决于调用的函数。标题然后亮起choosen菜单

在我的webapp中的menuC Account settings中,我希望有一个不同的控制器来控制AccountSettings/NotLoggedIn的子视图

从逻辑上讲,我希望menuC包含页眉和页脚,但随后将调用转发给管理登录或子页面的子用户


我使用的框架是错误的还是有一种直接的方法来实现这一点?

我认为你似乎不理解如何将MVC应用到你的结构中。想象一下:

控制器代表用户可以与之交互的应用程序的某些方面。例如,我可以有一个items控制器,允许用户创建、读取、更新或删除项目。与项交互的所有逻辑都由该控制器处理,这意味着它调用项模型并呈现必要的视图

在您的情况下,听起来您正在构建一个页面控制器,用于处理显示用户可能调用的特定页面的内容。所以你的控制器看起来像这样:

class Page extends CI_Controller {

    public function index()
    {
        // Logic to render home page
    }

        public function about()
    {
        // Logic to render the about page
    }

    //  ... etc ...
在处理有重叠的复杂站点时,视图可能会变得有点棘手。在此过程中,我发现了一个最有用的技巧,那就是使用一个模板库来减少冗余。这是我一直使用的一个:。使用模板库,您可以轻松定义包含页眉和页脚的布局,然后只需为要显示的内容传入部分内容

当您想要处理菜单之类的逻辑时,您所需要做的就是传入一个带有页面名称的变量,然后执行一些基本的PHP呈现菜单

// Say we pass in a variable called $current to our view
// $current contains the name of the current page
// So say $current = 'About' for this example.


$sitemenu = array(
    array('/', 'Home'),
    array('/about', 'About'),
    array('/help', 'Page 2'),
    array('/contact', 'Page 3')
); ?>
<nav>
  <ul>
  <?php foreach( $sitemenu as $page) { ?>
     <?php if($current == $page[1]) { ?>
         <li class="current"><a href="<?php echo $page[0]; ?>"><?php echo $page[1]; ?></a></li>
     <?php } else { ?>
         <li><a href="<?php echo $page[0]; ?>"><?php echo $page[1]; ?></a></li>
     <?php } ?>
  <?php } ?>
  </ul>
</nav>

希望这有帮助

我觉得听起来你好像不明白如何将MVC应用到你的结构中。想象一下:

控制器代表用户可以与之交互的应用程序的某些方面。例如,我可以有一个items控制器,允许用户创建、读取、更新或删除项目。与项交互的所有逻辑都由该控制器处理,这意味着它调用项模型并呈现必要的视图

在您的情况下,听起来您正在构建一个页面控制器,用于处理显示用户可能调用的特定页面的内容。所以你的控制器看起来像这样:

class Page extends CI_Controller {

    public function index()
    {
        // Logic to render home page
    }

        public function about()
    {
        // Logic to render the about page
    }

    //  ... etc ...
在处理有重叠的复杂站点时,视图可能会变得有点棘手。在此过程中,我发现了一个最有用的技巧,那就是使用一个模板库来减少冗余。这是我一直使用的一个:。使用模板库,您可以轻松定义包含页眉和页脚的布局,然后只需为要显示的内容传入部分内容

当您想要处理菜单之类的逻辑时,您所需要做的就是传入一个带有页面名称的变量,然后执行一些基本的PHP呈现菜单

// Say we pass in a variable called $current to our view
// $current contains the name of the current page
// So say $current = 'About' for this example.


$sitemenu = array(
    array('/', 'Home'),
    array('/about', 'About'),
    array('/help', 'Page 2'),
    array('/contact', 'Page 3')
); ?>
<nav>
  <ul>
  <?php foreach( $sitemenu as $page) { ?>
     <?php if($current == $page[1]) { ?>
         <li class="current"><a href="<?php echo $page[0]; ?>"><?php echo $page[1]; ?></a></li>
     <?php } else { ?>
         <li><a href="<?php echo $page[0]; ?>"><?php echo $page[1]; ?></a></li>
     <?php } ?>
  <?php } ?>
  </ul>
</nav>

希望这有帮助

我认为你应该在这里输入一些代码,因为答案可能会因代码而异。我认为你应该在这里输入一些代码,因为答案可能会因代码而异。