Проблемы с URL в CakePHP 2.3

У меня неплохая история работы с CakePHP 1.3, но я работаю над своим первым приложением 2.x (в данном случае 2.3) и столкнулся с тем, что кажется парой странных проблем с генерацией URL, которые Я надеюсь, что кто-то может мне помочь.

  1. У меня есть форма, которую я хочу отправить для того же действия с другим расширением (.csv). Для этого я попытался:

    # FYI, $this->here = /admin/activities/index
    $this->Form->create('Activity', 
      array( 'admin' => true, 'controller' => 'activities', 'action' => 'index', 'ext' => 'csv' )
    

    То, что я получаю в качестве действия формы, это action=".csv".

  2. В качестве возможного обходного пути я попытался просто установить URL-адрес в виде строки — 'url' => '/admin/activities/index.csv'. Теперь форма action выглядит правильно, но когда я отправляю форму, я получаю сообщение об ошибке.

    Error: The action admin_index.csv is not defined in controller ActivitiesController
    

Что мне здесь не хватает? Я прочитал документы FormHelper и Router 2.3, а также документы по миграции для каждой версии, которую я «пропустил» (2.1, 2.2, 2.3), и я не вижу ничего, что бросалось бы мне в глаза, но это было бы не так. Я впервые что-то пропустил.


person Rob Wilkerson    schedule 26.03.2013    source источник


Ответы (1)


То, что вы упомянули в № 2, - это не обходной путь, а правильный способ указать URL-адрес. Ошибка, которую вы получаете, вероятно, связана с тем, что вам не хватает Router::parseExtensions() в файле route.php.

Отредактируйте, просто чтобы было ясно, как должна выглядеть ваша форма- > create().

$this->Form->create('Activity', 
  array('url' => array(
     'admin' => true, 'controller' => 'activities', 'action' => 'index', 'ext' => 'csv'
  ))
);

и добавьте Router::parseExtensions() или Router::parseExtensions('csv'), если вы хотите анализировать только расширения .csv в файле route.php.

person ADmad    schedule 26.03.2013
comment
Проклятие. Я знал, что это будет что-то простое. Я включил префикс маршрутизации admin, но полностью не смог включить синтаксический анализ расширения. Спасибо чувак. Кроме того, я не понимал, что № 2 предпочтительнее синтаксиса массива. - person Rob Wilkerson; 26.03.2013