If I want to create a route, where the year, month and date are variables, how can I define that if these variables are empty, the current date shall be taken?
E.g. like this (doesn't work for sure...)
blog:
path: /blog/{year}/{month}/{day}
defaults: { _controller: AcmeBlogBundle:Blog:index,
year: current_year,
month: current_month
day: current_day
}
I thought about defining two different routes, like this
blog_current_day:
path: /blog
defaults: { _controller: AcmeBlogBundle:Blog:index }
blog:
path: /blog/{year}/{month}/{day}
defaults: { _controller: AcmeBlogBundle:Blog:index }
But if I then call blog_current_day
my controller
public function indexAction(Request $request, $year, $month, $day) {
// ...
}
will throw an exception because year, month and day are missing.
Any suggestions?
You can set container parameters dynamically in your bundle's extension located Acme\BlogBundle\DependencyInjection\AcmeBlogExtension
afterwards you can use those parameters in your routes like %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% }
If you only need configurable static parameters you can just add them to your config.yml
.
parameters:
static_parameter: "whatever"
... then again access them in your routing like %static_parameter%
.
You can set $year = null, $month = null, $day = null
in controller.
or maybe in route:
year: null,
month: null,
day: null,
Then in controller you should get last posts if variables = null, or posts by date.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With