Hi,
In Yii 1 there was such a thing as the Widget Factory to set global variables for widgets. Is there a way to set global variables in Yii 2 using a similar method?
James.
Hi,
In Yii 1 there was such a thing as the Widget Factory to set global variables for widgets. Is there a way to set global variables in Yii 2 using a similar method?
James.
I’m not completely sure but I am using some kartik widgets and his approach is to define all defaults in the module configuration (in config/web.php). Then they are overrideable per widget instance. This works well.
How did he define the defaults in config do you know?
'modules' => [
	'datecontrol' =>  [
		'class' => 'kartik\datecontrol\Module',
		// format settings for displaying each date attribute (ICU format example)
		'displaySettings' => [
			Module::FORMAT_DATE => 'dd-M-y',
			Module::FORMAT_TIME => 'HH:mm:ss a',
			Module::FORMAT_DATETIME => 'dd-MM-yyyy HH:mm:ss a',
		],
		// format settings for saving each date attribute (PHP format example)
		'saveSettings' => [
			Module::FORMAT_DATE => 'php:Y-m-d',
			Module::FORMAT_TIME => 'php:H:i:s',
			Module::FORMAT_DATETIME => 'php:Y-m-d H:i:s',
		],
		// set your display timezone
		'displayTimezone' => 'Europe/London',
		// set your timezone for date saved to db
		'saveTimezone' => 'UTC',
		// automatically use kartik\widgets for each of the above formats
		'autoWidget' => true,
		// default settings for each widget from kartik\widgets used when autoWidget is true
		/*			'autoWidgetSettings' => [
		Module::FORMAT_DATE => ['type'=>2, 'pluginOptions'=>['autoclose'=>true]], // example
		Module::FORMAT_DATETIME => ['pluginOptions'=>['autoclose'=>true]], // setup if needed
		Module::FORMAT_TIME => ['pluginOptions'=>['autoclose'=>true]], // setup if needed
		],
		*/
		// custom widget settings that will be used to render the date input instead of kartik\widgets,
		// this will be used when autoWidget is set to false at module or widget level.
		/*			'widgetSettings' => [
		Module::FORMAT_DATE => [
		'class' => 'yii\jui\DatePicker', // example
		'options' => [
		'dateFormat' => 'php:d-M-Y',
		'options' => ['class'=>'form-control'],
		]
		]
		]*/
		// other settings
	],
Ok thanks, is the datecontrol a standard Yii module then?
Anyone have any other answers for this?
Here an example of using Dependency Injection Container, It works fine.
put it in index.php (entry script)
\Yii::$container->set('yii\widgets\ActiveForm', [
			'options' => ['class' => 'form-horizontal'],
			'fieldConfig' => [
			     'labelOptions' => ['class' => 'log-lab'],
			],
	]);
Hi Abed,
Ok thanks, will give it a try.
James.