Bom dia amigos do Fórum.
Estou tendo um problema no Yii.
Eu tenho um módulo administrator, e tenho o seguinte código:
AdministratorModule.php
<?php
class AdministratorModule extends CWebModule {
public $preload = array('bootstrap');
public function init() {
// this method is called when the module is being created
// you may place code here to customize the module or the application
// import the module-level models and components
$this->setImport(array(
'administrator.models.*',
'administrator.components.*',
'administrator.extensions.*',
));
// alias para este modulo
Yii::setPathOfAlias('administrator_module', dirname(__FILE__));
// cria o componente bootstrap
$componentes['bootstrap'] = Yii::createComponent(array(
'class' => 'administrator_module.extensions.bootstrap.components.Bootstrap'
));
// cria o componente clientScript
$componentes['clientScript'] = Yii::createComponent(array(
'class' => 'administrator_module.components.ClientScript',
));
// percorre o array de componentes criados
// e os define
foreach($componentes as $id => $config) {
$this->setComponent($id, $config);
}
................
?>
Tenho uma extensão dentro do módulo que é carregada ao iniciar o mesmo:
ClientScript.php
<?php
class ClientScript extends CClientScript {
//put your code here
protected $activeScriptId;
protected $activeScriptPosition;
public function beginScript($id, $pos = parent::POS_READY) {
$this->activeScriptId = $id;
$this->activeScriptPosition = $pos;
ob_start();
ob_implicit_flush(false);
}
public function endScript() {
$script = ob_get_clean();
//$script = strip_tags($script);
//$script = substr(trim($script), 8, -9);
//echo $script;
$script = preg_replace("/<script[^>]*>/", "", $script, 1);
$script = preg_replace("/<\/script>/", "", $script, 1);
CClientScript::registerScript($this->activeScriptId, $script, $this->activeScriptPosition);
}
}
?>
E na view:
novo.php
<?php $cs = $this->getModule()->clientScript; ?>
..........
<?php $cs->beginScript('administrator_artigo_novo_scripts_' . $id); ?>
<script>
document.id('<?php echo $id; ?>').addEvent('click', function() {
$(this).button('loading');
});
</script>
<?php $cs->endScript(); ?>
...............
Simplesmente o código não registra, se eu colocar esta configuração no main.php ele funciona e registra tudo certo, agora quando é carregado pelo modulo não funciona, ja tentei causar erro de propósito dentro da classe e o erro aparece no Yii, indicando que o componente foi criado com sucesso. Outro teste foi colocar o attributo $teste com o valor "teste" na classe ClientScript e chamar na view com:
<?php $cs = $this->getModule()->clientScript; ?>
<?php echo $cs->teste; ?>
E foi impresso com sucesso na tela, o problema está na hora de registrar o script, lembrando que se a classe for criada direto no main.php ela funciona, mas se criar o componente pelo módulo, dai não funciona. Para o tipo de aplicação que eu quero, eu preciso criar este componente dentro do modulo administrator.
Obrigado desde já, abraços a todos.