我正在構建基於Joomla 3的網站。我需要禁用字段的驗證:名稱,用戶名,密碼1(第二個,因爲第一個是密碼2 )和email2並使用email1作爲用戶名(我安裝了插件電子郵件用戶授權)。我嘗試刪除文件組件/ com_users/models/forms/registration.xml中的這些字段,但驗證仍然存在。如果我不刪除它們,只是將這些行的required =「true」更改爲false,則註冊根本不起作用,並且任何用戶都無法存儲在數據庫中。我如何禁用這些字段?如何禁用Joomla 3註冊中某些字段的驗證
回答
這不是一個簡單的解決方法,你需要一些Joomla和PHP的基本知識,但我會盡可能簡單地向你解釋它。
>>>創建視圖模板覆蓋
首先你需要創建您的註冊視圖模板覆蓋的(以保持它的Joomla更新證明)。爲此,請在此處創建文件夾/templates/YOUT_TEMPLATE/html/com_users/registration並複製/components/com_users/views/registration/tmpl/default.php文件。
從現在開始,您可以修改模板文件夾中的註冊輸出。
>>>修改登記表輸出
默認的Joomla需要從形式文件/components/com_users/models/forms/registration.xml,在那裏它們被定義的所有領域,並輸出它們中一個看法。但是如果我們不想使用所有的字段,我們需要手動輸出字段。 我的示例代碼僅輸出用於註冊的電子郵件和密碼字段。下面是一個示例代碼,這樣做:(如default.php文件)
<?php
defined('_JEXEC') or die;
JHtml::_('behavior.keepalive');
?>
<div class="grid_8" id="register_block">
<div class="content_block">
<h1>Registracija</h1>
<div class="login<?php echo $this->pageclass_sfx?>">
<form id="member-registration" action="<?php echo JRoute::_('index.php?option=com_users&task=registration2.register'); ?>" method="post" enctype="multipart/form-data">
<div>
<div class="login-fields">
<label id="jform_email1-lbl" for="jform_email1">E-mail:</label>
<input type="text" name="jform[email1]" id="jform_email1" value="" size="30">
</div>
<div class="login-fields">
<label id="jform_password1-lbl" for="jform_password1">Password:</label>
<input type="password" name="jform[password1]" id="jform_password1" value="" autocomplete="off" size="30">
</div>
<button type="submit" class="button"><?php echo JText::_('JREGISTER');?></button>
<input type="hidden" name="option" value="com_users" />
<input type="hidden" name="task" value="registration2.register" />
<?php echo JHtml::_('form.token');?>
</div>
</form>
</div>
</div>
</div>
請注意,我也更換任務數值從registration.register到registration2.register,我這樣做是爲了旁路一些驗證規則使用我自己的控制器。
>>>建立控制器覆蓋
找到文件/components/com_users/controllers/registration.php並創建一個副本叫registration2.php在同一文件夾中。
打開文件registration2.php和UsersControllerRegistration改變它的類名來UsersControllerRegistration2
從現在的Joomla登記表上會使用這個類來創建一個新的用戶。
找到一個名爲寄存器方法找到這一行:
$requestData = JRequest::getVar('jform', array(), 'post', 'array');
在這裏的Joomla得到的登記表格數據。添加以下行:
$requestData['name'] = $requestData['email1'];
$requestData['username'] = $requestData['email1'];
$requestData['email2'] = $requestData['email1'];
$requestData['password2'] = $requestData['password1'];
它會增加丟失的註冊信息,並幫助您通過驗證。
注:這是一個示例代碼,以顯示主邏輯。如果有人有更好的解決方案,我會非常樂意聽到它。
按照同樣的想法,一個簡單的解決方案可能是隻包括com_users \意見\註冊\ TMPL \如default.php上述
<button type="submit" class="btn btn-primary validate"><?php echo JText::_('JREGISTER');?></button>
與價值觀隱藏輸入添加
<input type="hidden" id="jform[username]" name="jform[username]" value="username" />
<input type="hidden" id="jform_name" name="jform[name]" value="name" />
它將通過驗證,你將不再需要重寫控制器等
- 1. 禁用某些字段的驗證
- 2. 禁用某些字段的驗證
- 3. 驗證在用戶註冊上添加的字段 - Joomla 1.7
- 4. joomla註冊表單驗證
- 5. 爲ASP.NET MVC中的某些字段禁用客戶端驗證
- 6. 我如何在某些時候驗證某些字段?
- 7. WordPress的驗證註冊字段
- 8. 在某些字段上禁用Dojo驗證
- 9. 如何禁用某個字段的服務器端驗證?
- 10. 多個字段驗證註冊mvc3
- 11. 如何在Amazon Cognito中禁用某些用戶的驗證?
- 12. 如何驗證php Laravel 5中的某些字段?
- 13. 如何在某些實體中禁用Hibernate的模式驗證?
- 14. 驗證碼驗證未註冊的Joomla工作
- 15. jquery.validate驗證禁用字段
- 16. 如何從jquery中的dropdownchecklist中禁用某些字段
- 17. 註冊驗證
- 18. 如何在Grails 3中註冊自定義的驗證器類
- 19. 不同的用戶羣註冊joomla 3
- 20. Joomla 3 reCaptcha驗證
- 21. 如何禁用某些提交按鈕的表單驗證?
- 22. 如何使用Laravel驗證某個字段對某些行是唯一的?
- 23. Django - 驗證modelform_factory中的禁用字段
- 24. Joomla註冊表格字段排序
- 25. 如何禁用Joomla中某些文章的頁面元素
- 26. GXT字段驗證 - 如何禁用TextField驗證圖標?
- 27. jQuery驗證插件 - 禁用某些字段上的錯誤消息
- 28. 如何在joomla 2.5註冊表單中添加額外字段?
- 29. 我如何驗證基於Symfony2中的表單中的某些字段只有一些驗證組
- 30. django註冊:如何驗證用戶?
除了不破解核心文件。你使用的是Joomla 3的確切版本? – Craig
最新的,3.2.1 – stckvrw
我希望你的意思是改變驗證不會刪除它,因爲允許人們放任何他們想要的東西將是非常危險的。出於這個原因,一些最小的事情被強制執行。 這聽起來像你真正想要做的是做一個新的註冊組件,並停止使用核心。然後你會使用插件強制重定向,如果任何人嘗試去核心的。在joomla的核心,你必須有一個用戶名,密碼和電子郵件地址,他們必須單獨保存,儘管你可以使用它來使用戶名和電子郵件是相同的使用插件。 – Elin