Joe*_*joe 2 redirect uri codeigniter helper
我在每个需要加载我的应用程序主视图的函数中使用redirect()(来自uri helper).它重定向到相同的功能.我的目标是获得相同的清洁uri,即使我使用页面功能(调用其他控制器).这是好习惯吗?我什么时候应该使用redirect()?是否有其他解决方案可以获得类似的结果?
这是一些澄清的代码.
这是一个控制器:
<?php
class Main_controller extends Controller
{
function index()
{
$this->load->view(page);
}
function page_feature()
{
/* some stuff */
redirect('main_controller.php','refresh');
}
}
Run Code Online (Sandbox Code Playgroud)
有了这条路线规则:
$route['([a-z-A-Z1-9_]+)'] = "main_controller";
Run Code Online (Sandbox Code Playgroud)
uri是这样的:myapp.com/something在这个页面上,有一些功能可以调用(提交时)main_controller(或其他控制器)的其他功能,例如表单:
<form action="myapp.com/another_controller/method" method="post">
Run Code Online (Sandbox Code Playgroud)
在此查询"/ another_controller/method"的末尾,我使用redirect('main_controller')显示包含新数据的视图,并保留uri"myapp.com/something"而不是"myapp.com/another_controller/方法".
我想知道这是好事还是坏事,以及为什么.
使用像这样的重定向是不好的做法; 你基本上是服务器请求数量的两倍.
如果您不想在URL中使用函数名称,只需将表单POST到控制器index()函数,并根据某些条件调用所需的函数,例如从表单POST数据传递的内容:
<form action="myapp.com/controller_name" method="post">
Run Code Online (Sandbox Code Playgroud)
控制器:
function index(){
if(!empty($_POST['some_form_data'])){
$this->page_feature();
}
else{
$this->load->view('page');
}
}
function page_feature(){
/* some stuff */
$this->load->view('page_feature');
}
Run Code Online (Sandbox Code Playgroud)
您可能还想查看_remap()函数.这样,额外的uri段不会被视为函数调用.