Я новичок в CakePHP, хотя и не новичок в MVC-фреймворках для веб-разработки.Обычно я использую Drupal, когда создаю веб-сайты, которые не являются веб-приложениями, но мой сотрудник считает, что программирование с нуля гораздо лучше, чем использование готовых, хорошо протестированных и работающих решений.Вздох.
В любом случае, он согласился, по крайней мере, позволить мне использовать фреймворк, и я выбрал CakePHP, потому что: а) я всегда хотел его изучить, и б) я так люблю рельсы, что честно не могувернемся к Zend еще раз :) Как бы то ни было, я решил взять Cake, так что потерпите меня:)
Я установил множество контроллеров и прочего, реализующих все функции сайта, и теперь я 'Мне нужно настроить псевдонимы, похожие на Drupal.Такой псевдоним позволяет вам запрашивать http://www.example.com/this-be-me-page и отображать ту же страницу, которую вы видели, например, если бы вы запросили http://www.example.com/pages/42.Или верните то же самое, что и / article / 301, когда вы набираете / blog / the-самыми-превосходными-пост-когда-либо - я думаю, вы поняли, как это работает.
Я настроил базу данных и модель так, что яможно запросить «псевдоним» и получить «внутренний URL», то я застрял.Казалось, что вызов
$html = $this->requestAction($internal_url, array('return'));
вернул бы полностью визуализированный HTML, как если бы мой пользователь напрямую запросил $ internal_url, но это не так.Я получаю только HTML-код для представления действия, без всего того, что нужно для макета.
Я собираюсь использовать эту базу данных / контроллер, потому что мне бы хотелось, чтобы администраторы сайта могли редактировать псевдонимы через браузер, а неотредактировав некоторые неясные директивы маршрутизации или .htacces.Также гораздо быстрее войти в систему, создать страницу, установить псевдоним и выйти на обед.
Теперь: как мне это сделать?
РЕДАКТИРОВАТЬ Подражаяповедение app / webroot / index.php Я написал это действие для моего AliasController:
public function parse() {
$alias = $this->request->params['url'];
$record = $this->Alias->findByAlias($alias);
$request = $record['Alias']['request'];
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch(new CakeRequest($request), new CakeResponse(array('charset' => Configure::read('App.encoding'))));
die;
}
За исключением имени (оно ничего не анализирует, не так ли?) оно работает нормально ... по крайней меределает то, что хотел.Но я все еще чувствую себя грязным :) У кого-нибудь есть предложения?