2

これを説明する方法はありませんので、お手柔らかにお願いします。

ルーターは uri 変数キーを保持します

$router = 'movie/english/{slug}/edit/(id}/{title}';

ブラウザのアドレス バーの URI

$uri = 'movie/english/scorpion/edit/125/E01E05';

ルーターのプレースホルダー変数を URI 一致値にマップするコードを作成するにはどうすればよいですか。例えば

array(
    'slug' => 'scorpion',
    'id' => '125',
    'title' => 'E01E05'
);

ご理解いただけましたら、正しいリソースにリダイレクトしていただけますでしょうか。

4

2 に答える 2

1

このためのカスタム ソリューションを作成できますが、さらに何かが必要になるたびに wheel を表示することになります。そのため、私のアドバイスではベスト プラクティスを使用します。

composer require symfony/routing

<?php

require './vendor/autoload.php';

use Symfony\Component\Routing\Matcher\UrlMatcher;
use Symfony\Component\Routing\RequestContext;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;

$route = new Route(
    '/movie/english/{slug}/edit/{id}/{title}',
    array('controller' => 'MyController')
);
$routes = new RouteCollection();
$routes->add('route_name', $route);

$context = new RequestContext();
$matcher = new UrlMatcher($routes, $context);
$parameters = $matcher->match('/movie/english/scorpion/edit/125/E01E05');

var_dump($parameters);

印刷されます:

配列 (サイズ=5)
  'controller' => 文字列 'MyController' (長さ = 12)
  'slug' => 文字列 'scorpion' (長さ = 8)
  'id' => 文字列 '125' (長さ = 3)
  'タイトル' => 文字列 'E01E05'​​ (長さ = 6)
  '_route' => 文字列 'route_name' (長さ = 10)

それが最善の解決策だと心から信じています。

于 2015-12-17T10:32:32.257 に答える