2013-11-26 87 views
0

这是我的routes.php文件笨,路线和404错误

$route['(:any)'] = 'base/index/$1'; 
$route['home'] = 'base/home'; 
$route['operativa/(:any)'] = 'base/operativa/$1'; 
$route['default_controller'] = "base"; 
$route['404_override'] = ''; 

这是我的控制器,基地:

class Base extends MY_Controller { 

    function __construct() { 
     parent::__construct();  
     $this->load->model('filesmodel', 'files'); 
     $this->load->model('cestamodel', 'cesta'); 
    } 
    public function index ($pagina = 'login') { 
     $data = array(
      'page' => $pagina, 
      'logado' => false 
     ); 
     $this->load->view('modules/top', $data); 
     $this->load->view('pages/'.$pagina, $data); 
     $this->load->view('modules/bottom', $data); 
    } 
    public function home(){ 
     $pagina = 'home'; 
     $data = array(
      'page' => $pagina, 
      'logado' => true, 
      'notifications' => 3 
     ); 
     $this->load->view('modules/top', $data); 
     $this->load->view('pages/'.$pagina, $data); 
     $this->load->view('modules/bottom', $data); 
    } 
    public function operativa($tipo){ 
     echo 'El tipo es: '.$tipo.'<br>'; 
     switch ($tipo) { 
      case 'nuevo_cliente': 
       $pagina = $tipo; 
       break; 
      case 'contacto': 
       $pagina = $tipo; 
       break; 
      case 'mensajes': 
       $pagina = $tipo; 
       break; 
     } 
     $data = array(
      'page' => $pagina, 
      'logado' => true, 
      'notifications' => 2 
     ); 
     $this->load->view('modules/top', $data); 
     $this->load->view('pages/operativa/'.$pagina, $data); 
     $this->load->view('modules/bottom', $data); 
    } 
} 

问题是,网址:

/operativa/nuevo_cliente 

威尔用火404代替回声

我想念我想念吗?

PD:食指和在家工作的预期

回答

1

的问题似乎是你的URL与第一条路线匹配,所以它永远不会达到你想要的功能。

您应该重写从更具体的路线,更普遍的,像这样:

$route['home'] = 'base/home'; 
$route['operativa/(:any)'] = 'base/operativa/$1'; 
$route['(:any)'] = 'base/index/$1'; 
$route['default_controller'] = "base"; 
$route['404_override'] = ''; 
+0

但不应该至少通过'(:任何)/(:any)匹配'?? –

+0

你的意思是“operativa /(:any)”?如果是,不,因为它会首先匹配“(:any)”,然后停止处理规则。 –

0

首先把echo 'El tipo es: '.$tipo.'<br>';必须在switch叙述后。 为什么你在你的控制器中回应这个? 并做一个if语句而不是开关。

+0

我只是想,如果在执行函数就知道了,其调试的目的,但是,正如我在我的回答中发表的评论404是被解雇了 –

+0

这是你的默认控制器? – Chiribuc

+0

是的,最后两行 –

0

编辑!你不需要的switch叙述......试试这个,看看(只是用于测试)会发生什么:

public function operativa($pagina){ 

if (! file_exists('application/views/pages/operativa/'.$pagina.'.php')) 
{ 
    // Whoops, we don't have a page for that! 
    show_404(); 
} 
    $data = array(
      'page' => $pagina, 
      'logado' => true, 
      'notifications' => 2 
    ); 
    $this->load->view('modules/top', $data); 
    $this->load->view('pages/operativa/'.$pagina, $data); 
    $this->load->view('modules/bottom', $data); 
} 

你也可以改变这样的路线的顺序:

$route['operativa/(:any)'] = 'base/operativa/$1'; 
$route['(:any)'] = 'base/index/$1'; 
$route['home'] = 'base/home'; 
$route['default_controller'] = "base"; 
$route['404_override'] = ''; 
+0

它是我的代码的简化版本,我将需要它后来..反正,只是一个简单的回声不会发生......我认为这个问题是在我的路线? –