В приложении CakePHP у меня есть модель Acccount. Я хочу, чтобы у каждой учетной записи была собственная подпапка в папке webroot / img. Я могу без проблем создавать подпапки.

Проблема состоит в том, чтобы универсально определить, какой путь является текущим по умолчанию. Я могу получить идентификатор учетной записи из Auth.User.account_id.

Вместо того, чтобы изменять путь img в каждом представлении, где это требуется, путем введения Auth.User.account_id, я подумал, что было бы лучше динамически изменить путь к изображению по умолчанию, прочитав значение в файле core.php и изменив 'imageBaseUrl' там, поэтому он доступен во всем приложении.

Однако я не нашел документации о том, как вносить переменные в файл core.php. Я понимаю, что это файл, предназначенный для доставки переменных в приложение, поэтому, возможно, это невозможно.

Я попытался передать значение Configure :: write, как показано ниже, но, похоже, оно не читается в файле core.php.

* Web path to the public images directory under webroot.
* If not set defaults to 'img/'
Configure::write('App.imageBaseUrl', 'img/'.Configure::write('imageurl').'/');

Есть ли способ перенести переменную в файл core.php или, возможно, есть другой метод, который может динамически изменять путь к изображению в зависимости от переменной приложения?

0
curtisp 27 Июл 2014 в 11:07

2 ответа

Лучший ответ

При необходимости вы можете изменить значение для App.imageBaseUrl в обратном вызове beforeRender() вашего AppController. Нет необходимости изменять его до этого момента, поскольку значение требуется только в представлениях. Кроме того, у вас будет доступен компонент сеанса.

2
ADmad 27 Июл 2014 в 13:11

Лучше не изменять core.php. Попробуйте этот фрагмент кода в начале файла app / Config / bootstrap.php:

App::uses('CakeSession', 'Model/Datasource');
Configure::write('App.imageBaseUrl', 'img/' .
    (CakeSession::check('Auth.User') ? CakeSession::read('Auth.User.account_id') . '/' : ''));
0
Progredi Digital 27 Июл 2014 в 12:14