0 Пользователей и 1 Гость просматривают эту тему.
  • 25 Ответов
  • 851 Просмотров
*

ghostcom

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

Ссылка в представлении
Спойлер
[свернуть]

Код контроллера lists.php
Спойлер
[свернуть]

функция в модели lists.php
Спойлер
[свернуть]

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

NewUsers

  • Завсегдатай
  • 1877
  • 167 / 0
Код
<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 в пределах ее видимости...
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

ghostcom

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

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

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

NewUsers

  • Завсегдатай
  • 1877
  • 167 / 0
да это список, сылка в каждой записи. ID передается в адресную строку правильно.

Мне всегда помогало!
Код: php
<?php $id = JRequest::getVar('id'); ?>
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
Код: php
<?php foreach ( $this->items as $item ): ?>

это?
*

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
Мне всегда помогало!
Код: php
<?php $id = JRequest::getVar('id'); ?>

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

*

NewUsers

  • Завсегдатай
  • 1877
  • 167 / 0
Если я добавляю страница я весь код пишу в модели, а контроллер у меня пустой
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
Если я добавляю страница я весь код пишу в модели, а контроллер у меня пустой

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

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

так чтоли?
*

NewUsers

  • Завсегдатай
  • 1877
  • 167 / 0
Tak!! А как вызвать функцию по ссылке?

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

так чтоли?


Покажи как выглядит страница? Что бы удалить запись нажимаешь на ссылку или кнопку?
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

NewUsers

  • Завсегдатай
  • 1877
  • 167 / 0
Лучше всего, сделай по принципу который используется в других компонентах... Там все просто и легко.
Занимаюсь создание расширений только для Joomla 3.x.x | Доработка и настройка сайтов. Работаю по факту (без всяких предоплат). Оплата только на Яндекс.Деньги. Помогу с переездом на PHP 7.x и исправлю ошибки PHP
*

ghostcom

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

robert

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

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
при таком
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

  • Живу я здесь
  • 4958
  • 457 / 20
переименовывал remove в delete, delete в remove, какая разница?
В __construct() вы писали
Код: php-brief
$this->registerTask('delete', 'remove');
Это вы говорите системе: "Когда я вызываю delete, на самом деле я вызываю remove (ну я такой коварный, у меня не ищи легкой работы)" - теперь видите разницу?
Соответственно, когда вы переименовали remove в delete, но не удалили ту строку, система продолжает искать remove.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
Везде менял на delete, потом везде пробовал remove.
*

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
Неужели ни кто не может объяснить какие нюансы вызова task ?
*

robert

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

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
вот
Спойлер
[свернуть]
*

robert

  • Живу я здесь
  • 4958
  • 457 / 20
вот
Спойлер
[свернуть]
Так тут уже другой код. Ну и что с ним не так?

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

ghostcom

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

robert

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

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
Да блин дело до модели вообще еще не доходит!
The requested URL /****/lists.remove was not found on this server.

Но за замечание спасибо, поправил!
*

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
Шедевр еще не дописан, но ставится и удаляется нормально!
Компонент нужен только для одного сайта.
*

robert

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

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
view убрали. remove($cid = 0) поставил.

Не срабатывает remove в контроллере!
*

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
Пошел сдвиг, как я и думал дело в route.php который формирует ссылки!

вместо
Спойлер
[свернуть]

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

Спойлер
[свернуть]

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

Теперь будем разбираться в модели (дальше наверо я и сам справлюсь)
 
Спасибо robert'у!
« Последнее редактирование: 06.09.2016, 17:17:30 от ghostcom »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Убрать уровни подкатегорий в меню

Автор desaund1

Ответов: 0
Просмотров: 504
Последний ответ 10.08.2017, 22:34:06
от desaund1
Изменить форму на главной ?

Автор warlocksp

Ответов: 2
Просмотров: 547
Последний ответ 19.02.2017, 15:44:11
от warlocksp
Дублирование на сайте

Автор derenikp

Ответов: 3
Просмотров: 650
Последний ответ 08.01.2017, 17:30:00
от derenikp
ошибка "File for Model inventory not found"

Автор polgrig

Ответов: 0
Просмотров: 673
Последний ответ 05.08.2016, 14:36:02
от polgrig
Ошибка сайта Joomla 2.5 504 Gateway

Автор andreivik

Ответов: 5
Просмотров: 702
Последний ответ 04.05.2016, 20:17:50
от voland