Как запретить людям переходить на определенные URL-адреса в Codeigniter - PullRequest
0 голосов
/ 13 марта 2011

Скажем, у меня есть URL /product/view/1, что означает, что у меня есть метод в классе контроллера продукта:

function view($id)
{
    // Do something here
}

Как я могу заставить его милостиво потерпеть неудачу, если кто-то идет к /product/view?

В настоящее время я получаю два сообщения об ошибке, одно из которых Missing argument 1 for Budget::view(), а другое - Undefined variable: id, оба из которых я ожидаю, но, очевидно, я бы предпочел предоставить свое собственное.

Ответы [ 4 ]

4 голосов
/ 14 марта 2011

Два пути,

Вариант 1: укажите значение по умолчанию для переменной $id, сказав

function view($id = '')
{
     // Do something here and test if it's empty
}

Это то, что традиционно делается с дополнительными параметрами для функций в PHP

Вариант второй: вместо того, чтобы передавать сегмент URI функции в качестве параметра, вы могли бы альтернативно получить его с помощью помощника URI (по умолчанию автозагрузка)

function view()
{
     $id = (int) $this->uri->segment(3);
     // Do something here
}

Тогда вы можете проверить, установлен ли идентификатор и сделать это оттуда

2 голосов
/ 14 марта 2011

, если ваш контроллер - продукт, а метод - view

...
function view ( $id = null ) {
  // set graciously failing if $id = null to avoid error 
  // and make happend what you want
  ....
}
...
1 голос
/ 14 марта 2011
function view($id = false)
{
    if ($id===false) {
        //show error
        show_error('your error');
        //or redirect
    }
    // Do something here
}
1 голос
/ 13 марта 2011

Не знаю ни о каких особенностях CodeIgniter, но вы всегда можете перенаправить с помощью .htaccess и mod_rewrite

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/product/view$
RewriteRule ^(.*)$ http://www.example.com/your-error-document [R=301,NC,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...