4

年、月、日が変数であるルートを作成したい場合、これらの変数が空の場合、現在の日付が取得されるように定義するにはどうすればよいですか?

たとえば、このように(確かに機能しません...)

blog:
    path:      /blog/{year}/{month}/{day}
    defaults:  { _controller: AcmeBlogBundle:Blog:index,
                    year:  current_year,
                    month: current_month
                    day:   current_day
               }

このように、2つの異なるルートを定義することを考えました

blog_current_day:
    path:      /blog
    defaults:  { _controller: AcmeBlogBundle:Blog:index }

blog:
    path:      /blog/{year}/{month}/{day}
    defaults:  { _controller: AcmeBlogBundle:Blog:index }

しかし、その後blog_current_dayコントローラーを呼び出すと

public function indexAction(Request $request, $year, $month, $day) {
    // ...
}

年、月、日が欠落しているため、例外がスローされます。

助言がありますか?

4

2 に答える 2

11

動的コンテナ パラメータ

後で配置されたバンドルの拡張機能でコンテナーパラメーターを動的に設定Acme\BlogBundle\DependencyInjection\AcmeBlogExtensionでき、それらのパラメーターをルートで使用できます%parameter%

拡大

namespace Acme\BlogBundle\DependencyInjection;

use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class AcmeBlogExtension extends Extension
{
    public function load(array $configs, ContainerBuilder $container)
    {
        $container->setParameter(
            'current_year',
            date("Y")
        );

        $container->setParameter(
            'current_month',
            date("m")
        );

        $container->setParameter(
            'current_day',
            date("d")
        );
    }
}

ルーティング構成

blog:
    path:      /blog/{year}/{month}/{day}
    defaults:  { _controller: AcmeBlogBundle:Blog:index, year: %current_year%, month: %current_month%, day: %current_day% }

静的パラメータ

構成可能な静的パラメーターのみが必要な場合は、config.yml.

parameters:
    static_parameter: "whatever"

...次に、のようにルーティングでそれらに再度アクセスします%static_parameter%

于 2013-09-13T09:05:57.720 に答える
3

$year = null, $month = null, $day = nullコントローラーで設定できます。

または多分途中で:

year:  null,
month: null,
day:   null,

次に、コントローラーで、変数 = null の場合は最後の投稿を取得するか、日付ごとに投稿する必要があります。

于 2013-09-13T09:06:12.780 に答える