1

私は最初の Laravel 4 プロジェクトに取り組んでおり、雄弁な ORM を使用して、ルートを使用してデータベースから行を取得しています。例:

ルートは次のとおりです。

Route::get('{publisher}/{series}', function($publisher, $series)
{
$result = Comic::where('publisher', '=', $publisher)
->where('series', '=', $series)
->orderBy('issue', 'asc')
->get();

return View::make('comic')
->with('result', $result); 
});

これは、site.com/marvel/amazing-spider-man のような URL に一致するはずです

現在、site.com/marvel/amazing Spider-man または site.com/marvel/amazing%20spider-man でのみ機能します

「-」URLのみを使用するようにするにはどうすればよいですか? 私がする必要があるのは次のことだと思います:

を。a. ルーティング中に「-」を %20 に置き換えるコードを記述します。URL生成中に%20を'-'に置き換えるコードを書く

もう 1 つの考慮事項は、両方の URL で自分のコンテンツにアクセスできるようにしたくないということです。

4

4 に答える 4

5

期待した結果が得られないと思う理由は、「シリーズ」名がデータベースに保存される形式のためです。完全に一致するものを探していることを覚えておいてください。結果を取得したい場合:

http://www.site.com/marvel/amazing-spider-man

ダッシュ (-) を削除する余分な手順を避けるために、「amazing-spider-man」としてデータベースに保存する必要があります。この形式が気に入らない場合は、次のようにします。

$series = str_replace('-', ' ', $series); 

これによりダッシュが削除されますが、ダッシュが削除されるため、名前にダッシュを使用しないように注意してください。これで、シリーズ名を「アメイジング スパイダーマン」としてデータベースに保存できます。

于 2013-09-29T16:53:10.633 に答える
2

->with('result', Str::slug($result));

  • Str::slug(string $title, string $separator = '-')

http://laravel.com/docs/4.2/helpers#strings

于 2015-03-13T10:36:19.897 に答える