从codeigniter中的视图调用函数不起作用

时间:2016-10-18 10:14:20

标签: php .htaccess codeigniter

我从视图调用控制器函数,使用基本URL它将转到该函数,但显示404 Page Not Found。 .htaccess我正在使用的是这个

<IfModule mod_rewrite.c>
  RewriteEngine On 
  RewriteCond %{REQUEST_FILENAME} !-f 
  RewriteCond %{REQUEST_FILENAME} !-d 
  RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
</IfModule>

的config.php

$config['index_page'] = '';

autoload是

$autoload['helper'] = array('form', 'url', 'security');
routes.php中的

默认控制器是

$route['default_controller'] = 'prog_bar';

base_url是

$config['base_url'] = 'http://localhost:8080/jsLearning/prog_bar/';

视图

a href="<?php echo base_url().'file_func'; ?>">abc</a>

控制器

        <?php
    defined('BASEPATH') OR exit('No direct script access allowed');

    class prog_bar extends CI_Controller {

            public function index()
            {
                    $this->load->view('prog_bar_view');

            }


            public function file_func(){

                echo "form";
            }        
    }

我还缺少什么?

4 个答案:

答案 0 :(得分:1)

班级名称应以大写字母开头, 改变这个

class prog_bar extends CI_Controller {

class Prog_bar extends CI_Controller {

答案 1 :(得分:0)

您的base_url错了。它应该是

$config['base_url'] = 'http://localhost:8080/jsLearning/';

现在在HTML中使用site_url()代替base_url()

<a href="<?php echo site_url('prog_bar/file_func'); ?>">abc</a>

base_url()应仅用于资源链接,如图像文件,css文件等

按照

更新.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

答案 2 :(得分:0)

我认为你应该对下面的设置很好:

在Config.php中:

$config['base_url'] = 'http://localhost:8080/jsLearning/';

在您的视图中:

<a href="<?php echo base_url(); ?>file_func">abc</a>

在您的控制器中:

 class Prog_bar extends CI_Controller {

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

如果您仍然有错误,请检查您的base_url链接到什么...创建一个链接

<a href="<?php echo base_url(); ?>">Base Url</a>

在浏览器中查看链接的位置。

答案 3 :(得分:0)

您不会将基本网址用于网站内的链接。使用控制器名称和方法名称

<?php echo anchor("Pages/entry", "Post Entry"); ?>

什么是表格?它没有定义。这是一个页面吗?如果是这样,你没有查看地址。如果是一个片段,您仍然需要一个地址

$this->load->view('prog_bar_view')

一个函数不会简单地显示视图或片段,而不会被告知它在哪里。如果您尝试在页面中包含表单,则只需使用嵌套视图,并在主(html)视图中加载您尝试使用$ this-&gt; load-&gt; view()

显示的视图