我正在撰写一份表格。我已经创建了一个Controller“Search”,在那里我有“doSearch()”函数,我加载了一个视图。
<?php echo form_open('Search/doSearch'); ?>
单击提交按钮时,我需要在“搜索”控制器中调用该方法。
当我点击表单提交按钮时,我的请求直接进入
http://localhost/mysite/index.php/Search/doSearch
页面给出404错误。如何解决这个问题。
代码:
首先查看我写表单的位置
<html>
<body lang="en-US" dir="ltr">
<?php echo form_open('Search/doSearch'); ?>
<center
<table>
<tr>
<td>
<input type="text" name="item"/>
</td>
<td>
In
</td>
<td>
<input type="text" name="location"/>
</td>
</tr>
<tr>
<td>
<input type="submit" value="Search">
</td>
</tr>
</table>
</center>
<br>
<?php echo form_close(); ?>
</body>
</html>
预期控制器处理表单提交请求
<?php
class Search extends CI_Controller {
public function doSearch()
{
$this->load->view('search_page');
}
}
我在视图中写过“serch_page”视图。点击搜索按钮后,它会触发 http://localhost/mysite/index.phmysite/Search/doSearch 并给我
404 Page Not Found
The page you requested was not found.
application / .htaccess文件
<IfModule authz_core_module>
Require all denied
</IfModule>
<IfModule !authz_core_module>
Deny from all
</IfModule>
routs.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
编辑:我在route.php中设置条目并检查每个其他位置。现在,点击表单提交后,我在http://localhost/mysite/Search/doSearch
页面中出现以下错误
Object not found!
The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error.
If you think this is a server error, please contact the webmaster.
Error 404
localhost
答案 0 :(得分:0)
我认为问题在于您需要在使用斜杠调用form_helper时启动操作URL。而不是:
<?php echo form_open('Search/doSearch'); ?>
试试这个:
<?php echo form_open('/Search/doSearch'); ?>
我认为问题在于,您提供的不以斜杠开头的任何操作网址都将被解释为relative url,因此如果您要显示此表单控制器 - 说网址为http://localhost/mysite/index.php/controller/method - 然后您的部分相对网址Search / doSearch将最终提交至http://localhost/mysite/index.php/controller/methodSearch/doSearch
注意:我的回答是假设您的Search.php位于您的controllers目录的根目录中,而不是某个子目录。如果它在某个子目录中,比如application / controllers / subdir / Search.php,那么你应该这样做:
<?php echo form_open('/subdir/Search/doSearch'); ?>
编辑:仔细查看您的帖子,由于某种原因,您的CodeIgniter项目似乎存在于子目录 mysite 中。既然如此,试试这个:
<?php echo form_open('/mysite/Search/doSearch'); ?>
答案 1 :(得分:0)
“我在我的视图中写过”serch_page“视图。一旦我点击搜索 键“
此处视图页面名称为“serch_page”,在 doSearch 功能中,视图页面名称为“ search_page ”,请注意不匹配..您必须将您的视图页面名称重命名为 search_page.php ,而不是 serch_page.php
答案 2 :(得分:0)
我认为这是因为您使用的是上/下字符 试试这个,它应该工作:
<?php echo form_open('search/dosearch'); ?>