CakePHP вызывает различные контроллеры в одном представлении? - PullRequest
0 голосов
/ 11 августа 2010

Я не могу найти метод для вызова другого контроллера в одном представлении. Самое близкое, что я нашел, это $ html-> link («Register User», массив («controller» => «users», «action» => «register»)).

Итак, я сделал урок по блогам CakePHP. У меня есть posts_controller.php, и теперь я хочу добавить в звездную систему рейтинга. Я погуглил кое-что и получил эту изящную, уже готовую рейтинговую систему, которую вы можете скачать: http://www.reversefolds.com/articles/show/rating2

Теперь у меня есть два контроллера: rating_controller.php и post_controller.php.

Мой базовый маршрут, '/', указывает на действие индекса пост-контроллера. В моем сообщении view.ctp показана одна запись блога, которую я хочу добавить в систему рейтинга в этом представлении. И чтобы использовать рейтинг, мне нужно вызвать помощника так:

echo $rfRating->ratingBar($ratingInfo);

Когда я делаю это в файле view.ctp поста. Жалуется. Я попытался возиться с var $helpers = array('blah'), но это не сработало, я просто слил контроллер рейтинга в post_controller, что я считаю глупым. Я могу использовать систему рейтинга и для других вещей.

Так что ... я не знаю, что делать. На самом деле это ложь, я думаю, у меня две идеи, как справиться с этим. Но мне нужны критические замечания и другие решения, которые не помогли моим навыкам Google.

  1. Должен ли я просто внедрить всю систему оценки в app_controller.php вместо этого? Чтобы каждый контроллер унаследовал эту рейтинговую систему? Звучит глупо, потому что я не думаю, что моя регистрация пользователя нуждается в системе рейтинга.

  2. Я нашел другое решение, requestAction('blab'). Я думаю, что это позволяет мне сделать это ... вызвать другой контроллер внутри контроллера. Но это не одобряется, потому что это убивает производительность. И я точно не знаю, как это сделать, ха-ха, или это работает. Я называю контроллер рейтинга, но как насчет его вспомогательной функции? Возможно, он распознает это, если я добавлю переменную $ helpers = array ('rating');

В любом случае, спасибо всем заранее, что нашли время, чтобы прочитать это. Пожалуйста, направьте меня в правильном направлении.

1 Ответ

2 голосов
/ 11 августа 2010

Сделайте так, чтобы rating_controller расширял posts_controller.

Это дает вам возможность выборочно решать, для каких страниц нужен модуль рейтингов.

...