Форум русской поддержки Joomla!® CMS
11.12.2016, 10:04:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Переменная в ссылках.Не выполняется задаm

 (Прочитано 217 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« : 04.09.2016, 19:44:04 »

   Всем привет! Требуется ваша помощь в написании компонента для своего сайта. При передачи переменной ($item->id) в ссылке ни как не могу ее отлавить и выполнить функцию в модели.
Поиск перерыл вдоль и поперек, форум последний крик. Вот код:

Ссылка в представлении
Показать текстовый блок

Код контроллера lists.php
Показать текстовый блок

функция в модели lists.php
Показать текстовый блок

Перепробовал уже все варианты. Три дня бьюсь с этой фигней. Ни сообщения ошибки, ни удаления. Как будто кода вообще не существует.
« Последнее редактирование: 05.09.2016, 16:48:55 от ghostcom » Записан
NewUsers
Давно я тут
****

Репутация: +32/-0
Online Online

Пол: Мужской
Сообщений: 394


« Ответ #1 : 04.09.2016, 20:07:56 »

Код:
<a class="btn" href="index.php?option=com_ocenka&view=lists&controller=lists&task=delete&cid=<?php echo $item->id;?>" onclick="return confirm('точно?');">Удалить из базы</a>

Это должно быть на странице какого-нибудь списка.
Выведи содержимое переменной которая используется в foreach для формирования списка...
Ну или хотя бы попробуй вывести содержимое переменной $item в пределах ее видимости...
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #2 : 04.09.2016, 20:15:20 »

Это должно быть на странице какого-нибудь списка.
Выведи содержимое переменной которая используется в foreach для формирования списка...
Ну или хотя бы попробуй вывести содержимое переменной $item в пределах ее видимости...

Не совсем понял вас.

да это список, сылка в каждой записи. ID передается в адресную строку правильно.
Записан
NewUsers
Давно я тут
****

Репутация: +32/-0
Online Online

Пол: Мужской
Сообщений: 394


« Ответ #3 : 04.09.2016, 20:17:25 »

да это список, сылка в каждой записи. ID передается в адресную строку правильно.

Мне всегда помогало!
Код
<?php $id = JRequest::getVar('id'); ?>
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #4 : 04.09.2016, 20:17:32 »

Код
<?php foreach ( $this->items as $item ): ?>

это?
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #5 : 04.09.2016, 20:19:46 »

Мне всегда помогало!
Код
<?php $id = JRequest::getVar('id'); ?>

Так пробовал вместо jInput не помогло или ч не туда вставляю. В модель или контроллер надо?

Записан
NewUsers
Давно я тут
****

Репутация: +32/-0
Online Online

Пол: Мужской
Сообщений: 394


« Ответ #6 : 04.09.2016, 20:23:10 »

Если я добавляю страница я весь код пишу в модели, а контроллер у меня пустой
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #7 : 04.09.2016, 20:29:47 »

Если я добавляю страница я весь код пишу в модели, а контроллер у меня пустой

Tak!! А как вызвать функцию по ссылке?

index.php?model=lists&task=delete&id=100

так чтоли?
Записан
NewUsers
Давно я тут
****

Репутация: +32/-0
Online Online

Пол: Мужской
Сообщений: 394


« Ответ #8 : 04.09.2016, 20:58:31 »

Tak!! А как вызвать функцию по ссылке?

index.php?model=lists&task=delete&id=100

так чтоли?


Покажи как выглядит страница? Что бы удалить запись нажимаешь на ссылку или кнопку?
Записан
NewUsers
Давно я тут
****

Репутация: +32/-0
Online Online

Пол: Мужской
Сообщений: 394


« Ответ #9 : 04.09.2016, 21:00:21 »

Лучше всего, сделай по принципу который используется в других компонентах... Там все просто и легко.
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #10 : 04.09.2016, 21:11:19 »

Это не <form> и не <input submit>, а простая <a></a>.
Я и так делаю по аналогии с 'phoca guestbook' компонента, принцип тот же и стоит на одном сайте, а работать не хочет. Мне кажется дело в route.php. Пока не могу разобраться
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #11 : 04.09.2016, 23:01:26 »

ТС, у вас какая-то сборная солянка.
1. Конечно, вы можете делать по-своему в своей точке входа, но в Joomla в $_REQUEST обычно передаются либо task, либо view. В вашем случае - task.
2. controller не передается - он присутствует в task в виде controller.task (точнее, subcontroller.task).
3. зачем вызывать функцию delete, оговаривая при этом, что на самом деле вызывается remove? Не проще ли переименовать remove() в delete()?
4. в модели не нужно указывать аргумент $cid в функции delete(), или хотя бы указать его значение по-умолчанию: у вас он берется из $_REQUEST.
Предполагаю, что вы должны были вызвать
Код
index.php?option=com_ocenka&task=lists.delete&cid=<?php echo $item->id;?>
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #12 : 05.09.2016, 05:56:01 »

при таком
index.php?option=com_ocenka&task=lists.delete&cid=<?php echo $item->id;?>
вызове выдает
The requested URL/lists.remove was not found on this server.

переименовывал remove в delete, delete в remove, какая разница?
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #13 : 05.09.2016, 10:18:54 »

переименовывал remove в delete, delete в remove, какая разница?
В __construct() вы писали
Код
$this->registerTask('delete', 'remove');
Это вы говорите системе: "Когда я вызываю delete, на самом деле я вызываю remove (ну я такой коварный, у меня не ищи легкой работы)" - теперь видите разницу?
Соответственно, когда вы переименовали remove в delete, но не удалили ту строку, система продолжает искать remove.
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #14 : 05.09.2016, 16:52:12 »

Везде менял на delete, потом везде пробовал remove.
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #15 : 05.09.2016, 20:38:41 »

Неужели ни кто не может объяснить какие нюансы вызова task ?
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #16 : 05.09.2016, 22:56:51 »

Я вам уже объяснил вкратце. Попробую еще раз.
В компоненте есть основной контроллер (в корневой папке модуля) и субконтроллеры (в папке controllers). В отличие от функций (tasks) основного контроллера, которые вызываются таким образом:
/index.php?option=component_name&task=task_name&blahblahblah
, функции субконтроллера вызываются вместе с названием последнего:
/index.php?option=component_name&task=subcontroller_name.task_name&blahblahblah.
Но это еще не все: мы не знаем, что вы поаналогииничали в точке входа, в моделях... Короче, выкладывайте весь код своего компонента.
Черт побери, я уже жалею, что начал здесь писать. Все почему-то сразу за компоненты взялись, не утруждаясь изучать азы. Здесь что, песочница, готовящая Joomla-разработчиков с нуля?
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #17 : 06.09.2016, 06:28:27 »

вот
Показать текстовый блок
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #18 : 06.09.2016, 16:50:19 »

вот
Показать текстовый блок
Так тут уже другой код. Ну и что с ним не так?

P.S. А, вижу, вы хотите удалить запись с фронта? Ну, для начала в модели вместо $this->_db поставьте $db.
Потом, я вроде уже писал, что view и task одновременно не передаются. А у вас все равно стоит index.php?option=com_online_ocenka&view=lists&task=lists.remove&cid='.$item->id
« Последнее редактирование: 06.09.2016, 17:27:21 от robert » Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #19 : 06.09.2016, 17:19:52 »

Код почти тот же! В виде lists(фронтэнд) есть кнопка "Удалить из базы" при нажатии задача не выполняется ни че не удаляется. Уже по всякому пробовал. По этому и обратился  к форуму. А у вас что работает?
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #20 : 06.09.2016, 17:27:50 »

P.S. А, вижу, вы хотите удалить запись с фронта? Ну, для начала в модели вместо $this->_db поставьте $db.
Потом, я вроде уже писал, что view и task одновременно не передаются. А у вас все равно стоит index.php?option=com_online_ocenka&view=lists&task=lists.remove&cid='.$item->id
А у вас что работает?
Боже упаси! Чтобы я еще поставил себе ваш шедевр.
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #21 : 06.09.2016, 17:40:00 »

Да блин дело до модели вообще еще не доходит!
The requested URL /****/lists.remove was not found on this server.

Но за замечание спасибо, поправил!
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #22 : 06.09.2016, 17:42:03 »

Шедевр еще не дописан, но ставится и удаляется нормально!
Компонент нужен только для одного сайта.
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #23 : 06.09.2016, 17:50:49 »

&view=lists убрали? Если да, то надо указать модели, откуда берется $cid. Потом, если у $cid нет значения по-умолчанию, то нельзя вызвать функцию remove() без аргумента.
ставится и удаляется нормально!
А что там особенного? Joomla сама записывает или удаляет файлы + таблицы, нужно лишь указать правильные пути в XML. А вот код будет работать или нет, ей по фиг.
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #24 : 06.09.2016, 17:58:26 »

view убрали. remove($cid = 0) поставил.

Не срабатывает remove в контроллере!
Записан
ghostcom
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 45



« Ответ #25 : 06.09.2016, 18:13:20 »

Пошел сдвиг, как я и думал дело в route.php который формирует ссылки!

вместо
Показать текстовый блок

поставил( точнее почистил)

Показать текстовый блок

Выдал сообщение о удачном удалении, хотя фактически удаление не произошло. Но это уже чтото. Двигаем далее.

Теперь будем разбираться в модели (дальше наверо я и сам справлюсь)
 
Спасибо robert'у!
« Последнее редактирование: 06.09.2016, 18:17:30 от ghostcom » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet