【问题标题】:CodeIgniter loading a view through controller from another viewCodeIgniter 通过控制器从另一个视图加载视图
【发布时间】:2012-08-14 11:55:02
【问题描述】:

出于安全原因,这里提到http://codeigniter.com/user_guide/installation/index.html 我已将系统和应用程序文件夹放在另一个名为 OSW_appnsys 的文件夹中,该文件夹位于 Web 根文件夹上方。现在我在以下目录中有一个名为“Pages”的控制器类和一个“View”函数。

C:\wamp\www\OSW_appnsys\application\controllers

现在,当我从另一个名为 'header.php' 的视图文件中调用控制器 'Pages' 的 'View' 方法时,我得到了像这样的 404 错误

The requested URL /CodeIgniter_2.1.2/pages/view/products was not found on this server.

product 是 URI。

我这样称呼:

<a class="mainmenu" href="<?php echo base_url('pages/view/products')?>">Products</a>

任何帮助将不胜感激。类型

【问题讨论】:

  • 如果我通过完整的目录链接直接访问控制器类,则会收到错误“禁止访问。您没有访问应用程序文件夹的权限”
  • 如果视图是方法,你的方法的参数是什么?
  • products 是视图文件 products.php 的名称
  • 您是否从文档中执行此步骤:After moving them, open your main index.php file and set the $system_folder and $application_folder variables, preferably with a full path, e.g. '/www/MyUser/system'.
  • 传统上我们不会像这样加载视图,我们会调用控制器函数 pages/views 然后 $this->load->view('products');

标签: php codeigniter controller


【解决方案1】:

您不链接到视图,而是链接到控制器的名称。如果您的控制器名为“页面”,您必须链接到:

<a class="mainmenu" href="<?php echo base_url('pages/controllers/products')?>">Products</a>

假设您已将控制器放在“pages/controllers/”文件夹中。在名为“pages”的控制器中,您加载视图(名为 products_view.php 的文件或其他文件,位于您的视图文件夹中),如下所示:

$this->load->view('products_view.php');

【讨论】:

    【解决方案2】:

    看来您可能已经了解 CodeIgniter 的工作原理了。

    如上所述,在您的配置文件中,您将拥有

    $application_folder = 'application';
    $system_folder = 'system';
    

    把这些改成

    $application_folder = '../OSW_appnsys/application';
    $system_folder = '../OSW_appnsys/system';
    

    然后将浏览器指向 CodeIgniter 的 index.php 所在的 URL。

    \
    \OSW_appnsys
    \OSW_appnsys\application
    \OSW_appnsys\system
    \htdocs
    \htdocs\index.php
    

    通过

    http://localhost/index.php

    此外,当访问控制器或视图时,您只需要访问控制器名称即可。即

    <a href="<?php echo site_url('pages/view'); ?>">Go to page</a>
    

    然后您将拥有一个带有 View 操作的 Page 控制器,在其中可以执行操作

    <?php
    class Pages extends CI_Controller {
    
        public function view()
        {
            echo $this->load->view('pages/view');
        }
    }
    ?>
    

    【讨论】:

      【解决方案3】:

      在锚标签中试试这个

      base_url().'index.php/pages/view'
      

      并在控制器的视图函数中加载视图products.php

      【讨论】:

      • 能否在 index.php 文件中显示您提到的 $application_folder='' 和 $system_folder=''
      • 是的,还要检查你的 .htaccess ,你指定的 ReWriteBase
      • @user1537158 我应该在那个文件中写什么?现在它拒绝所有人
      • 例如在 index.php $system_path = 'OSW_appnsys/system';和 $application_folder = 'OSW_appnsys/application';如果您在 OSW_appnsys 中的应用程序和系统文件夹
      猜你喜欢
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 2015-12-02
      • 2023-03-11
      相关资源
      最近更新 更多