I have create a controller to override a template if it finds a parameter with value but for some reason it is not overriding the default template.
<?php
namespace {
use SilverStripe\CMS\Controllers\ContentController;
use SilverStripe\Control\Controller;
class ForSalePageController extends ContentController
{
/**
* An array of actions that can be accessed via a request. Each array element should be an action name, and the
* permissions or conditions required to allow the user to access it.
*
* <code>
* [
* 'action', // anyone can access this action
* 'action' => true, // same as above
* 'action' => 'ADMIN', // you must have ADMIN permissions to access this action
* 'action' => '->checkAction' // you can only access this action if $this->checkAction() returns true
* ];
* </code>
*
* @var array
*/
protected function init()
{
parent::init();
$printVar = Controller::curr()->getRequest()->getVar('print');
if ($printVar && $printVar === 'portrait') {
$this->renderWith('PrintPortrait');
}
}
}
}
even though there is a parameter that match the value it still rendering the page with the default template ForSalePage.ss