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

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

Профиль пользователя: как запретить редактировать поле?

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

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

Сообщений: 97


« : 05.10.2013, 01:15:45 »

Здравствуйте,
подскажите пожалуйста, как в стандартном профиле пользователя Joomla 3.0 сделать недоступное поле для редактирования (по аналогии с полем логин). Чтобы пользователь зайдя в профиль не мог редактировать это поле но видел его визуально? необходимо запретить редактировать поле "имя пользователя".

Благодарю.
Записан
kreker92
Давно я тут
****

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

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



« Ответ #1 : 05.10.2013, 02:10:05 »

$("input[name='name']").attr('disabled', 'false');
Записан
kreker92
Давно я тут
****

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

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



« Ответ #2 : 05.10.2013, 02:11:11 »

Код:
$("input[name='name']").attr('disabled', 'false');


Или же найти шаблон и прописать там этот атрибут.
Записан
Fedor Vlasenko
Профи
********

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

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


Все начинается с Value


« Ответ #3 : 05.10.2013, 02:33:45 »

kreker92 это не решение. Js я смогу легко отключить и отредактировать поле.
Для решения нужно писать плагин группы user в котором нужно обрабатывать два события
onUserBeforeSave возвращать старое имя (для тех кто попытается его изменить) и сделать поле не редактируемым
Код
function onContentPrepareForm($form, $data){
   if (!($form instanceof JForm)) {
       $this->_subject->setError('JERROR_NOT_A_FORM');
 
       return false;
   }
   if ($form->getName() =='com_users.profile')
   {
       $form->setFieldAttribute('name', 'readonly', 'true', null);
   }
}
 
Записан
varX
Живу я здесь
******

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

Сообщений: 1457


разработка компонентов


« Ответ #4 : 05.10.2013, 02:40:38 »

kreker92 это не решение. Js я смогу легко отключить и отредактировать поле.
Для решения нужно писать плагин группы user в котором нужно обрабатывать два события
onUserBeforeSave возвращать старое имя (для тех кто попытается его изменить) и сделать поле не редактируемым

Зачем такие сложности? Функцию unset() никто не отменял.
Записан
Fedor Vlasenko
Профи
********

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

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


Все начинается с Value


« Ответ #5 : 05.10.2013, 02:43:44 »

Цитировать
Функцию unset() никто не отменял
необходимо запретить редактировать поле "имя пользователя".
lcd25 где здесь взаимосвязь? и при чем здесь unset?
Записан
varX
Живу я здесь
******

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

Сообщений: 1457


разработка компонентов


« Ответ #6 : 05.10.2013, 03:11:52 »

lcd25 где здесь взаимосвязь? и при чем здесь unset?
Это же элементарно:
if(JRequest::getCmd('view', '')=='profile')unset($_REQUEST['name']);
Можно даже в шаблоне написать сверху, чтобы обновляться. зачем тут плагины плодить?
Записан
Fedor Vlasenko
Профи
********

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

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


Все начинается с Value


« Ответ #7 : 05.10.2013, 03:29:57 »

и дальше что, что будет при обновлении записи, что вы запишите пользователю в поле name?
Что будет мешать добавить его обратно туда(к примеру я модулем вывожу форму)?
« Последнее редактирование: 05.10.2013, 03:42:53 от Fedor Vlasenko » Записан
varX
Живу я здесь
******

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

Сообщений: 1457


разработка компонентов


« Ответ #8 : 05.10.2013, 03:57:58 »

Цитировать
и дальше что, что будет при обновлении записи, что вы запишите пользователю в поле name?
Задача в том и заключается, чтобы туда ничего не записалось.

Цитировать
Что будет мешать добавить его обратно туда(к примеру я модулем вывожу форму)?
Почитайте спецификацию функции unset. очень рекомендую вообще читать спецификации.
Записан
Fedor Vlasenko
Профи
********

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

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


Все начинается с Value


« Ответ #9 : 05.10.2013, 04:13:13 »

Цитировать
Задача в том и заключается, чтобы туда ничего не записалось.
Таким образом вы не сможете изменить профиль пользователя. Может тогда вообще не выводить форму редактирования.
lcd25 не зацикливайтесь на unset //$form->removeField('name');. Это не решение.

Цитата: oazis от 04.10.2013, 23:15:45
необходимо запретить редактировать поле "имя пользователя".
и каким же вы образом запретили.
И иногда стоит признавать ошибки. Ибо все мы ошибаемся. А вот зацикливаться не стоит. Без хаков это только плагин. Запретили редактирование имени и при записи вернули оригинальные.
Записан
varX
Живу я здесь
******

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

Сообщений: 1457


разработка компонентов


« Ответ #10 : 05.10.2013, 04:24:57 »

Цитировать
Таким образом вы не сможете изменить профиль пользователя. Может тогда вообще не выводить форму редактирования.
lcd25 не зацикливайтесь на unset //$form->removeField('name');. Это не решение.
С чего вы взяли, что не будет меняться профиль пользователя? Не будет меняться только имя пользователя самим пользователем, чего и требовалось добиться.

Цитировать
И иногда стоит признавать ошибки. Ибо все мы ошибаемся. А вот зацикливаться не стоит. Без хаков это только плагин. Запретили редактирование имени и при записи вернули оригинальные.
Без хаков, действительно, понадобится плагин. Увы, это большой недостаток Joomla - в ней теряется гибкость и динамичность PHP. Но если проблема обновлений не стоит, то гораздо проще добавить unset($data['name']); в модель com_users/models/profile.php
« Последнее редактирование: 05.10.2013, 04:50:42 от lcd25 » Записан
oazis
Осваиваюсь на форуме
***

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

Сообщений: 97


« Ответ #11 : 05.10.2013, 15:18:57 »

Друзья,

приятно видеть, что мой вопрос вызвал бурную дискуссию, но, можете посоветовать решение. А то из прочитанного я так ничего не понял. Smiley На сайте нет свободной регистрации, все "учетные записи" (акки) создаются вручную администраторами.

Задача: чтобы пользователь не мог изменять в своем профиле поле 'name', по аналогии с полем логин. Плохо, что в Joomla 3.0 не предусмотрено запрещать или разрешать менять это поле.

Буду благодарен за помощь в решении задачи.
Записан
varX
Живу я здесь
******

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

Сообщений: 1457


разработка компонентов


« Ответ #12 : 05.10.2013, 15:58:02 »

oazis, думаю, вам стоит воспользоваться советом Fedor Vlasenko и заказать разработку плагина. Но если это ваш сайт, и обновлять его вы не планируете, то можно воспользоваться моим советом - именно, прописать unset($data['name']); в функцию save() в модель com_users/models/profile.php. При этом, чтобы не вводить пользователя в заблуждение, также добавить в шаблон 'disabled', как советовал kreker92 выше.
Записан
oazis
Осваиваюсь на форуме
***

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

Сообщений: 97


« Ответ #13 : 05.10.2013, 18:33:25 »

Fedor Vlasenko, вы как разработчик можете подсказать, сколько будет стоить разработка плагина?
Записан
s0042
Новичок
*

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

Сообщений: 3


« Ответ #14 : 03.02.2014, 17:23:46 »

Здравствуйте нужен плагин или компонент, который может создавать профиль в профиле пользователя. Другими словами создав свой профиль, пользователь может создать другой профиль, из своего кабинета, о другом пользователе, с указанием области города, ФИО, года рождения, выбор пола и прикрепить фото, с возможностью комментировать этого человека всеми кто его найдет. Сколько будет стоить сие чудо?) и кто сможет взяться за эту работу?
Записан
kreker92
Давно я тут
****

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

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



« Ответ #15 : 03.02.2014, 18:07:22 »

Создайте отдельную тему в коммерческом разделе.
Записан
Hishchnik
Давно я тут
****

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

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


©


« Ответ #16 : 14.05.2014, 23:28:47 »

Мож кому и пригодится:
readonly="true" в XML файле формы ни кто не отменял, при этом создается и отображается строка, но имеет атрибут "readonly"
Пример:
Код
<field name="name" type="text" description="Название метки" label="Описание" readonly="true" size="30" />
также есть disabled="true" - тоже не дает изменить, но уже и в форму не передает данные...
« Последнее редактирование: 15.05.2014, 02:58:27 от Hishchnik » Записан
EndVal
Осваиваюсь на форуме
***

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

Сообщений: 53


« Ответ #17 : 04.03.2015, 15:29:34 »

Здравствуйте нужен плагин или компонент, который может создавать профиль в профиле пользователя. Другими словами создав свой профиль, пользователь может создать другой профиль, из своего кабинета, о другом пользователе, с указанием области города, ФИО, года рождения, выбор пола и прикрепить фото, с возможностью комментировать этого человека всеми кто его найдет. Сколько будет стоить сие чудо?) и кто сможет взяться за эту работу?
Посмотри здесь, может подойдет
http://www.adsmirny.ru/kontakty
Записан
Страниц: [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