2015-09-27 8 views
0

Я использую библиотеку Ignited Datatables, а в моем скрипте я использую функцию add_column для установки некоторых кнопок редактирования и удаления. Это мой сценарийIgnited Datatables - проблема со ссылками в add_column

$this->datatables->select('posts.id, posts.title') 
     ->select('DATE_FORMAT(`date_published`, \'%d-%m-%Y\') AS `date_published`', false) 
     ->select('posts_categories.title as category') 
     ->from('posts') 
     ->join('posts_categories', 'posts.category_id = posts_categories.id', 'left') 
     ->unset_column('id') 
     ->add_column('Actions', btn_edit('admin/posts/edit/$1') . ' ' . btn_delete('admin/posts/delete/$1'), 'id'); 
     return $this->datatables->generate(); 

Проблема заключается в том, что идентификатор сообщения не проходит в URL кнопок, вместо этого я получаю это: admin/posts/edit/id, где он должен быть admin/posts/edit/1 и т.д.

ответ

0

В конце концов я нашел решение проблемы.

В выберите() заявление я сделал это и работал должным образом:

$this->datatables->select('posts.id AS pid, posts.title') 

Кажется, что конфликт в запросе в первичных ключей обеих таблиц, обусловленно Я поставил и как id (posts.id и posts_categories.id).

Так что обратно в запрос, когда я устанавливаю posts.id AS pid как псевдоним, это исправило мою проблему.

0

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

->add_column('Actions', btn_edit("admin/posts/edit/$1") . ' ' . btn_delete("admin/posts/delete/$1"), 'id'); 

Docs.

+0

Нет, похоже, что это не сработало. Я заметил это, когда мне нужно было ПРИСОЕДИНЯТЬ категории сообщений. До этого (или если я удалю JOIN и категорию выбора из запроса), он работал абсолютно нормально и с одинарными кавычками тоже – Lykos

+0

Strange. Даже в документации Datatables для такого примера используются двойные кавычки. – Tpojka

+0

Проблема появляется только с инструкцией JOIN. Если я удалю это, ссылки работают правильно – Lykos

0

Просто позвоните имя поля базы данных в коде как

$ this-> datatables-> выберите ('posts.id в качестве идентификатора, posts.title') -> выбрать ('DATE_FORMAT (date_published, \ '% d-% m-% Y \') AS date_published ', false) -> select (' posts_categories.title as category ') -> from (' posts ') -> join (' posts_categories ', 'posts.category_id = posts_categories.id', 'left') -> unset_column ('id') -> add_column ('Actions', btn_edit ('admin/posts/edit/$ 1'). ''. btn_delete (' 'admin/posts/delete/$ 1'), 'id'); return $ this-> datatables-> generate();

Вам просто не удавалось позвонить posts.id как id. Какое имя вы передаете как переменную, вам нужно выбрать одно и то же имя переменной в команде выбора

Смежные вопросы