Можно ли динамически изменить имя представления или создать представление, которое еще не существует в phalcon?

Я хотел бы знать, как я могу сделать это в phalcon. У меня есть сайт с phalcon. Все работает отлично, теперь я наткнулся на проблему, вот что мне нужно.

Когда пользователь нажимает на сообщение, созданное другим пользователем. Он берет его на этот пост с фотографиями и всем, что он вошел в БД. Мне бы хотелось, чтобы в браузере имя этого представления не было похоже на www.website.com/posts/index, а на www.website.com/posts/Nameofthepost, и подобное для других публикаций на веб-сайте. Чтобы все сообщения (на самом деле реклама) показывали свое имя в браузере. Надеюсь, я написал все понятно.

Ценим все предложения

0

Решение

Это связано с маршрутизацией, не так ли? Я изменил это из моего собственного кода, я использовал группирование, вам не нужно. Я не проверял этот код.

// routes.php

$router = new \Phalcon\Mvc\Router();
$router->setDefaultModule("__YOUR_MODULE__");
$router->removeExtraSlashes(true);

... your other routes ...

// posts group

$posts = new \Phalcon\Mvc\Router\Group(array(
'module' => '__YOUR_MODULE__',
'controller' => 'posts',
'action' => 'index'
));

// All the routes start with /post
$posts->setPrefix('/post');

$posts->add('/{postName}/:params', array(
'action' => 'index',
'params' => 2
));

// Maybe this will be enough for your needs,
// the one above has a catch all params, which
// has to be manually parsed
$posts->add('/{postName}', array(
'action' => 'index',
));

$posts->add('[/]*', array(
'action' => 'index',
));
$router->mount($posts);
unset($posts);

... other routes ...

return $router;

На вашем контроллере вы можете получить postName Param таким образом:

$this->dispatcher->getParam('permaPath');

Как показано в документации по маршрутизации phalcon, вы можете использовать регулярное выражение в своей конфигурации маршрутизации, что-то вроде этого?

$posts->add('/{postName:[-0-6_A-Za-z]+}/:params', array(
'action' => 'index',
'params' => 2
));

Итак, только -_, 0-9, A-Z, a-z разрешено для postName, Если в URL-адресе была запятая или что-то еще, маршрут не совпадает, страница 404 не найдена.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]