CakePHP 3.6.14: визуализировать представление (.ctp) в режиме начальной загрузки

#php #cakephp #bootstrap-modal

#php #cakephp #bootstrap-modal

Вопрос:

Возможно ли отобразить представление (например,add.ctp) в модальном режиме начальной загрузки? И если да, то возможно ли визуализировать только html в файле add.ctp без загрузки макета по умолчанию?

Потому что в настоящее время я пытаюсь создать пользовательскую форму, подобную той, что находится в файле add.ctp, чтобы отобразить ее в модальном режиме, и это действительно мучительная попытка опубликовать и получить объекты json, чтобы отправить форму и заполнить сетки в моем приложении.

Ответ №1:

Да, это возможно.

Создать add.ctp в папке Ajax, например:

 /Posts
  index.ctp
  /Ajax
  add.ctp
  

в Postings::add() задайте Ajax-макет и с помощью js получите /posts/add и визуализируйте модальный.

Читать:

https://book.cakephp.org/3.0/en/controllers/components/request-handling.html
https://book.cakephp.org/3.0/en/views.html#layouts

Редактировать:

в контроллере

 public function add()
{
   // your code here ...
   if ($this->getRequest()->is('ajax')) {
       // render "add" view in Ajax folder and use "ajax" Layout
       $this->render('Ajax/add', 'ajax')
   }
}
  

https://book.cakephp.org/3.0/en/controllers.html#rendering-a-specific-template

РЕДАКТИРОВАТЬ 2 (часть jQuery) пример

 <button type="button" data-toggle="modal" data-remote="<= $this->Url->build(/* ADD HERE YOUR PARAMS*/) 
 ?>" data-target="#myModel">Open Model</button>

$('body').on('click', '[data-toggle="modal"]', function(){
        $($(this).data("target") ' .modal-body').load($(this).data("remote"));
    });  
  

Комментарии:

1. Спасибо, вероятно, это то, что я ищу. Я пытаюсь найти рабочий пример рядом с книгой cakephp, у вас есть какой-нибудь на примете?

2. Просто создайте /Posts/Ajax/add.ctp, затем в браузере получите /posts/ajax/add. Затем в add method установите ajax layout и повторите попытку в браузере. Теперь у вас есть идея.

3. @Salines Можете ли вы предоставить код? Я сбиваюсь с пути и не могу найти полный рабочий пример…

4. @Salines Я больше разбираюсь в модальном режиме, я создал свой модальный режим в view.ctp, но при нажатии кнопки я хочу загрузить edit.ctp в этом модальном режиме. Мне нужна помощь относительно js-кода, который вызовет модальный файл и загрузит его с помощью edit.ctp вместо того, чтобы открывать его на новой странице

5. @dvn22, хорошо, я обновлю, но не тестировал, просто дам вам представление.