Получить имя контроллера и SQL-запрос в файле CakePHP Router? - PullRequest
0 голосов
/ 25 января 2011

возможно ли выполнить sql запрос в файле роутера CakePHP?запрос должен выбрать данные, касающиеся имени контроллера.

чего можно достичь?

update: мне нужно использовать другой маршрут относительно URLсвязь между URL и маршрутом будет определена в базе данных.

tnx в adv!

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Да, вы можете получить доступ к базе данных из файла роутера и динамически настроить роутер по своему желанию. Для этого вам нужно записать этот код в файле роутера:

    App::import('Model', 'ModelName');
    $ModelName = new ModelName();

Здесь ModelName - это название вашей модели, из которой вы хотите получить данные. Итак, теперь у вас есть объект модели, теперь вы можете получить данные, вызвав функцию модели и определив маршрутизатор. Для моего случая я использовал этот код

    $data = $ModelName ->find('all'); 
    if(!empty ($data)){
        //pr($events);
        foreach ($data as $item) {
            if($item['ModelName']['field_name']!=""){
                Router::connect("/{$item['ModelName']['field_name']}", array('controller' => 'registrations', 'action' => 'index', $item['ModelName']['anyvalue']));
            }
        }
    }

Таким образом, вы можете определить свой маршрутизатор по своему усмотрению. Если у вас все еще проблемы, свяжитесь со мной ..

Спасибо Behestee

1 голос
/ 22 февраля 2011

Перенаправление в контроллере возможно, но это создает издержки, и идея контроллера не заключается в маршрутизации. В противном случае класс маршрутизации отсутствовал.

На самом деле это расширение класса Router, поэтому новый класс с вашей функцией connect, которая наследует класс router, является лучшим решением.

Вы можете сделать вашу маршрутизацию путем поиска URL-адресов в базе данных. Просто создайте таблицу с URL, контроллером, действием и параметром. Найти текущий URL (Router :: normalize ($ dispatcher-> getUrl ());), а затем соединиться с Router :: connect («результаты из базы данных»)

С уважением, Воутер де Бур.

...