我在codeigniter中遇到了一些路由问题。 我的路由文件如下:
$route['admin/newgallery'] = 'gallery/do_upload';
$route['admin/listgallery'] = 'gallery/list';
$route['admin/create'] = 'posts/create';
$route['admin/listposts'] = 'posts/list';
$route['admin'] = 'admin/index';
$route['posts/(:any)'] = 'posts/view/$1';
$route['posts'] = 'posts/index';
$route['default_controller'] = 'pages/index';
$route['(:any)'] = 'pages/index/$1';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
除前两个路线外,所有路线都运行正常:
$route['admin/newgallery'] = 'gallery/do_upload';
$route['admin/listgallery'] = 'gallery/list';
当我输入mypage/admin/listgallery
时,它会正确调用gallery/list
。问题是当我用原始控制器/方法键入地址时(在这种情况下是图库/列表),当它应该调用404错误时它会进入列表页面!我设置的每个其他路由规则都会这样做,除了前两个!
答案 0 :(得分:0)
开箱即用,Codeigniter允许您直接从URL访问任何控制器/方法。
它还提供了自定义路由的创建,因此如果您愿意,可以使用参数传递指向同一个控制器/方法的10个或更多URL!
因此,在这种情况下,您只需要访问Routes配置中任何不当的控制器/方法。
您需要测试url是否在路由配置数组中定义。
主要代码是......
create or replace trigger Phone_check
before insert or update on PETS
for each row
DECLARE
SELECT phone INTO v_phone
FROM PEOPLE
INNER JOIN Family ON PEOPLE.ID=FAMILY.ID
INNER JOIN PETS ON FAMILY.ID=PETS.ID
WHERE PETS.ID=:NEW.ID;
IF :NEW.NAME IS NOT NULL
AND :NEW.AGE IS NOT NULL
AND v_phone IS NOT NULL THEN
:NEW.INVITATION:='Yes';
ELSIF :NEW.NAME IS NULL
OR :NEW.AGE IS NULL
AND v_phone IS NULL THEN
:NEW.INVITATION:='No';
END IF;
END;
你会把它放在你想要保护的控制器构造函数中。
当然,您可以创建一个通用控制器,并以这种方式扩展您想要保护的控制器。
(不推荐)或者如果你想得到真正的" hacky"你可以将它放在system / core / controller构造函数中并使其成为系统范围。所以一切都需要在路线中定义。 注意:这会破坏' default_controller'。