2014-01-21 60 views
3

我正在構建基於Joomla 3的網站。我需要禁用字段的驗證:名稱,用戶名,密碼1(第二個,因爲第一個是密碼2 )和email2並使用email1作爲用戶名(我安裝了插件電子郵件用戶授權)。我嘗試刪除文件組件/ com_users/models/forms/registration.xml中的這些字段,但驗證仍然存在。如果我不刪除它們,只是將這些行的required =「true」更改爲false,則註冊根本不起作用,並且任何用戶都無法存儲在數據庫中。我如何禁用這些字段?如何禁用Joomla 3註冊中某些字段的驗證

+0

除了不破解核心文件。你使用的是Joomla 3的確切版本? – Craig

+0

最新的,3.2.1 – stckvrw

+0

我希望你的意思是改變驗證不會刪除它,因爲允許人們放任何他們想要的東西將是非常危險的。出於這個原因,一些最小的事情被強制執行。 這聽起來像你真正想要做的是做一個新的註冊組件,並停止使用核心。然後你會使用插件強制重定向,如果任何人嘗試去核心的。在joomla的核心,你必須有一個用戶名,密碼和電子郵件地址,他們必須單獨保存,儘管你可以使用它來使用戶名和電子郵件是相同的使用插件。 – Elin

回答

4

這不是一個簡單的解決方法,你需要一些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.registerregistration2.register,我這樣做是爲了旁路一些驗證規則使用我自己的控制器。

>>>建立控制器覆蓋

找到文件/components/com_users/controllers/registration.php並創建一個副本叫registration2.php在同一文件夾中。

打開文件registration2.phpUsersControllerRegistration改變它的類名來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']; 

它會增加丟失的註冊信息,並幫助您通過驗證。

注:這是一個示例代碼,以顯示主邏輯。如果有人有更好的解決方案,我會非常樂意聽到它。

0

按照同樣的想法,一個簡單的解決方案可能是隻包括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" /> 

它將通過驗證,你將不再需要重寫控制器等

相關問題