Что лучший способ состоит в том, чтобы создать базу динамических данных управляемые меню в CakePHP?

Я считаю, что это то, что вы ищете:

class Maker
{
    private $arrayContainer = []; // Make public if you want to access it `$maker->arrayContainer`
    function set(string $key, $value = [])
    {
        $this->arrayContainer[$key] = $value;
    }
    function get(string $key,$default=null){
        return isset($this->arrayContainer[$key])?$this->arrayContainer[$key]:$default;
    }
    function all(){
        return $this->arrayContainer;
    }
}
$maker = new Maker();
$maker->set('a');
$maker->set('b', [1,2,3,4,5]);
$maker->set('c', ['a'=>1,'b'=>2,'c'=>3]);

//Get a specific index from the Maker class
print_r($maker->get('b'));

//Get the arrayContainer from the Maker Class
print_r($maker->all());

Надеюсь, это поможет,

9
задан Chuck Burgess 18 January 2013 в 15:57
поделиться

6 ответов

Модели должны выбрать и обработать данные от таблицы, что они - modelising, таким образом выберите данные меню для каждой модели в той модели.

Компоненты предназначаются для корпуса логики, совместно использованной несколькими контроллерами, таким образом, компонент меню, который используется всеми контроллерами, походит на хорошее место для помещения кода, чтобы выбрать данные меню из моделей и делать пюре из нее вместе.

Меню обычно является вложенным списком, если это верно, с Вашим меню также, самым легким способом произвести разметку для этого является рекурсивная функция (функция, которая называет себя), который производит один уровень за один раз, так а не элемент, я просто создал бы помощника с меню () метод там и вызов что непосредственно от расположения.

7
ответ дан 4 December 2019 в 15:26
поделиться

Я думаю, что Вы использовали бы, создают элемент, который содержал бы HTML для меню и затем представил бы меню в Вашем расположении.

echo $this->element('your menu');

Для создания этого динамичным, Вы устанавливаете ссылки меню, возможно, как массив в контроллере.

0
ответ дан 4 December 2019 в 15:26
поделиться

Я соглашаюсь с ответом neilcrooks, но хотел бы добавить несколько вещей для ясности.

Помощники и элементы довольно просты, за исключением того, что помощники могут быть немного более устойчивыми (по крайней мере, это - то, как я думаю о них ;)). Так, при использовании помощника можно связать и развязать образцовые ассоциации на лету - который позволит Вам захватывать данные из своих (временно) связанных моделей.

Лично, мне нравятся толстые модели и тощие контроллеры, таким образом, я думаю, был ли я в этой ситуации, я использовал бы помощника и временно связал бы модели с нею. К любым данным, которые я должен выбрать из существующих моделей, получили бы доступ через Model1-> fetchMenuPart (...) вводят вызовы.

Затем можно позвонить помощнику из файла (файлов) расположения.

4
ответ дан 4 December 2019 в 15:26
поделиться

Я не знаю, почему это нигде не задокументировано, но я только что нашел это вчера вечером. Переменные для вашего макета или элементов должны быть определены с окончанием _for_layout. Например: $ this-> set ('Categories_for_layout', $ this-> Category-> find ('all'));

Я использовал метод beforeFilter в классе AppController, потому что мне нужно это меню на каждой странице.

1
ответ дан 4 December 2019 в 15:26
поделиться

Я нашел здесь одну хорошую статью http://www.milestree.com/webdev/cakephp/dynamic_menu

0
ответ дан 4 December 2019 в 15:26
поделиться

Вот отличное решение, которое я нашел, когда искал эту самую вещь в Интернете.

http://articles.classoutfit.com/cakephp-dynamic-navigation-bars/

1
ответ дан 4 December 2019 в 15:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: