Pergunta

Eu tenho uma estrutura personalizada em meu aplicativo CakePHP que é assim:

class AppController extends Controller // default

class ExtendedAppController extends AppController

class ChildController extends ExtendedAppController

Os componentes que declaro em ExtendedAppController são apagados quando eu declaro componentes em um Controlador infantil aula.Acho que também terei esse mesmo problema com ajudantes.Como faço para mesclar os arrays para evitar isso?

Foi útil?

Solução

Cake mescla as variáveis ​​do controlador atual apenas com UM classe pai que por padrão é definida na variável $_mergeParent = 'AppController'; no núcleo Controller aula.

Você pode substituir esta variável em seu ChildController definindo:

class ChildController extends ExtendedAppController {

    protected $_mergeParent = 'ExtendedAppController';

}

No entanto, isso irá ignorar todos os auxiliares e componentes definidos no AppController, então copie os componentes e auxiliares do seu AppController para o seu ExtendedAppController.Isso deve responder à sua pergunta, acho que você poderá usar os componentes do ExtendedAppController do seu ChildController e outros controladores que estendem o AppController usarão os componentes do AppController.

É a forma como o método Controller::_mergeControllerVars() é escrito no núcleo.É precisamente por isso que livro diz:

O HtmlHelper, o FormHelper e o SessionHelper estão disponíveis por padrão, assim como o SessionComponent. Mas se você optar por definir sua própria matriz $ ajudantes no AppController, inclua HtmlHelper e FormHelper Se você deseja que eles ainda estejam disponíveis por padrão em seus controladores.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top