我有一个具有agentexport功能的用户控制器,应该可以下载一个excell电子表格。下面是函数:
function agentexport($agentName) {
if($this->isAdmin() == TRUE) {
$this->loadThis();
}
else {
$this->excel->setActiveSheetIndex(0);
// Gets all the data using agent name
$data = $this->excel_model->getdatabyname($agentname);
//print_r($data);
//die;
$this->excel->stream('crosstown.xls', $data);
}
}
在我看来,我正在尝试通过以下按钮执行上述功能:
<a class="btn btn-sm btn-info" href="<?php echo base_url().'agentexport/'.$record->agentName; ?>" title="Download Sheet><i class="fa fa-pencil"></i>Download Sheet</a>
以上按钮用于立即下载电子表格。 该网址在我的路线中定义为:
$route['agentexport'] = "user/agentexport";
我是否以正确的方式定义路线?当我点击路线时,我得到以下网址 http://www.XXXXX.com/John%20Grisham。 如您所见,名称被附加在url的末尾,但页面显示404。我在做什么错了?
答案 0 :(得分:1)
个人观点在这里,但我认为没有充分的理由使用路线。如果没有其他问题,下面将是一个很好的实验,以查看$route
定义是否有问题。
$route
。 <a class="btn btn-sm btn-info" href="<?= base_url('user/agentexport/'.$record->agentName); ?>" title="Download Sheet"><i class="fa fa-pencil"></i>Download Sheet</a>
要测试链接是否有效并且正在传递值,请使用以下版本的agentexport
public function agentexport($agentName)
{
echo $agentName;
//or alternately
//var_dump($agentName);
}
假定您在链接中使用$agentName
之前是可用的值 。如果上述内容为您提供了一个值,那么您就知道$route
是问题所在。
您可以尝试找到$route
,但是$route['agentexport/(:any)'] = 'user/agentexport/$1';
应该有效。如果您要切换回使用路由,请不要忘记还原链接代码。我会这样写,将URI作为参数传递给base_url
。
<a class="btn btn-sm btn-info" href="<?= base_url('agentexport/'.$record->agentName); ?>" title="Download Sheet"><i class="fa fa-pencil"></i>Download Sheet</a>
如果找到一条可行的路由-并且确实要使用一条路由-然后将agentexport
中的代码恢复为实际需要。但同样,我没有任何明显的理由混淆链接的URL。
答案 1 :(得分:0)
如果从视图中指向/controller_name/method/agent_name
(这基本上是在路由“翻译”之后要做的事情,那么您要做的就是使用URI从URI中选择代理名称) URL助手(记住要事先加载)
$user_id = $this->uri->segment(3);
以上内容将采用URI第三段(在我的示例中为agent_name
)中的任何内容,并将其分配给$user_id
变量。
请记住,任何可能由用户操作的东西都不可信任,因此您需要清理$user_id
并确保允许请求文件的用户访问它