Я ищу сделать собственный маршрут, используя структуру CodeIgniter. Я пытаюсь сделать URL следующим образом:
http://localhost/accounts/Auth.dll?signin
До сих пор я попытался добавить следующее в файл config.php:
$route['accounts/Auth.dll?signin'] = "accounts/signin";
но, как вы догадались, это не сработает. Я также попытался избежать таких символов:
$route['accounts/Auth\.dll\?signin'] = "accounts/signin";
и это тоже не работает. Я также пробовал включать в себя ведущую и конечную косые черты .. это тоже не сработало. Кто-нибудь случайно знает, что может решить мою проблему?
Я настоятельно рекомендую использовать маршрутизацию SEF.
Но если по какой-либо причине вы не хотите этого, вы можете проверить строку запроса внутри Контроллера Accounts
и затем вызвать соответствующий метод следующим образом:
маршрутизатор:
$route['accounts/Auth.dll'] = "accounts";
контроллер:
class Accounts extends CI_Controller { public function __construct() { # Call the CI_Controller constructor parent::__construct(); # Fetch the query string if ($method = $this->input->server('QUERY_STRING', TRUE)) { # Check whether the method exists if (method_exists($this, $method)) { # Invoke the method call_user_func(array($this, $method)); } } } protected function signin() { # Your logic here } }
Это позволяет автоматически вызывать методы по строке запроса.
Я не уверен, что все в порядке использовать GET-params в config.php routes.php. Попробуйте такой способ:
routes.php
$route['accounts/Auth.dll'] = "accounts/index";
accounts.php
public function index() { if ($this->input->get('signin') != false) { $this->signin(); } } private function signin() { // some code }
дляpublic function index() { if ($this->input->get('signin') != false) { $this->signin(); } } private function signin() { // some code }
вpublic function index() { if ($this->input->get('signin') != false) { $this->signin(); } } private function signin() { // some code }
Но, что касается меня, это плохо.
Я рекомендую вам просто использовать другую маршрутизацию:
/accounts/Auth.dll/signin
И так далее.