0

ファルコンでこれを行う方法を知りたいです。phalcon を使用して Web サイトを構築しています。問題に遭遇した今、すべてがうまく機能しています。ここに私が必要とするものがあります。

ユーザーが別のユーザーによって作成された投稿をクリックしたとき。写真と DB に入力したすべてのものを含むこの投稿に移動します。ブラウザでは、このビューの名前が www.website.com/posts/index のようではなく、www.website.com/posts/Nameofthepost のようになり、Web サイト上の他の投稿ごとにそのようになることを望みます。すべての投稿 (実際には広告) の名前がブラウザに表示されるようにします。私がすべてを理解できるように書いたことを願っています。

すべての提案に感謝します

4

1 に答える 1

1

それはルーティングと関係がありますね。私は自分のコードからこれを変更しました。グループ化を使用しました。その必要はありません。このコードはテストしていません。

// 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コントローラーでは、次の方法でパラメーターを取得できます。

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

phalcon ルーティングのドキュメントに示されているように、ルーティング構成で正規表現を使用できます。

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

したがって、、、、のみが-_許可されます。URL にカンマが含まれている場合は、ルートが一致せず、404 ページが見つかりません。0-9A-Za-zpostName

于 2015-12-26T15:04:53.673 に答える