Как реализовать автоматические "хлебные крошки" в MVC на PHP? На данный момент все работает хорошо, но я заметил, что по моему методу код выполняется, что мне вообще не желательно.
private static function getTitle($url, $is_module=FALSE)
{
if ($is_module) {
$prefix = \Config\Config::getPrefixTitle($url);
if (!is_null($prefix)) {
return $prefix;
}
}
$meta_tags = get_meta_tags($url);
if (array_key_exists('breadcrumb_title', $meta_tags)) {
return $meta_tags['breadcrumb_title'];
}
$str = file_get_contents($url);
if (strlen($str) > 0) {
$str = trim(preg_replace('/\s+/', ' ', $str)); // supports line breaks inside <title>
preg_match("/\<title\>(.*)\<\/title\>/i", $str, $title); // ignore case
return $title[1];
}
return NULL;
}
Я из запроса http://localhost.localhost/admin/users/update
определенными операциями получаю такой массив путей:
В контроллерах, которые отвечают за страницы я делаю назначение $this->view->breadcrumb_title = "Сайт";
. Этот реализовано в базовом классе представления:
public function __set($name, $value) {
$this->$name = $value;
}
public function __get($name) {
if ($name == "breadcrumb_title") {
return isset($this->breadcrumb_title) ? $this->breadcrumb_title : $this->title;
}
return isset($this->$name) ? $this->$name : NULL;
}
Так вот заметил интересную вещь, если использовать функцию, что я в начале указал (get_meta_tags/file_get_contents), то вся страница выполняется... Это не очень хорошо, поскольку там я могу что-то создавать. Лично у себя заметил на тестах функций, что мол заголовки получаются хорошо, то создается файл, который я удалял... Это происходит из-за того, что в index
действии контроллера есть создание файла.
Вопрос такой: как можно этого избежать, какие есть методы?
Спасибо.
Решил вопрос тем, что дал возможность задавать руками заголовки и хлебные крошки. Это также применяется в большинстве современных фреймворках, так что я решил поступил именно так. Избежать выполнения кода не возможно, так как делается запрос на страницу. В теории можно было попробовать в контроллере отлавливать какой-то параметр и на основе его игнорировать выполнение. Но это слишком муторно, как по мне. Наверняка тоже не сработает, поскольку задается заголовок в action, а его придется выполнить. Каждый раз руками проверку пилить - ну неее.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
у меня есть сайт на козе, мне нужно к нему через API делать POST запросы, НО из за отсутствия CURL на бесплатном хостинге, я не понимаю как сделать...
Не знаю как реализовать данную задачу(таблица cron_planning_figure):
Как создать обычный (не шаблонный класс), который наследовал бы шаблонный без явного определения типа? Хочу сделать подобие итератора,