我搜索了幾個小時,我沒有發現真的如何覆蓋用戶和管理員端的登錄模板。FosUserBundle不同的登錄頁面
心中已經創建了管理員在防火牆security.yml
firewalls:
admin:
pattern: /admin(.*)
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: /admin/login
check_path: /admin/login_check
default_target_path: /admin
logout:
path: /admin/logout
target:/
anonymous: true
access_control:
- { path: ^/admin/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/logout$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/login_check$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/.*, roles: IS_AUTHENTICATED_ANONYMOUSLY }
現在我想創建一個登錄表單。
據我所知,我們必須創建一個登錄動作(因爲如果我們不symfony2拋出一個路徑未發現異常)。
路由的管理員登錄:
admin_login:
pattern: /admin/login
defaults: { _controller: CSCommonBundle:Admin/Default:login }
控制器,用於顯示登錄頁面:
public function loginAction()
{
return $this->render('CSCommonBundle:Admin/Login:login.html.twig');
}
和登錄表單:
<form class="form-signin" action="/admin/login_check" method="post">
<h2 class="form-signin-heading">Giriş Yapın</h2>
<div class="login-wrap">
<input type="text" name="_username" id="username" class="form-control" placeholder="{% trans %}Kullanıcı Adı{% endtrans %}/{% trans %}E-Posta{% endtrans %}" autofocus>
<input type="password" name="_password" id="password" class="form-control" placeholder="{% trans %}Şifre{% endtrans %}">
<label class="checkbox">
<input type="checkbox" id="remember_me" name="_remembe_me" value="on"> Beni Hatırla
</label>
<button class="btn btn-lg btn-login btn-block" type="submit">{% trans %}Giriş Yap{% endtrans %}</button>
</div>
</form>
現在,我有幾個問題;
- 我們如何獲取登錄錯誤?
- 正在創建像這樣的登錄表單,與fosuserbundle一起使用?
- 我們可以爲其他用戶類型創建另一個登錄頁面嗎?
- Giving form/admin/login_check(與security.yml相同)是否健康?
請向我解釋這些。我迷路了,卡在這裏。
謝謝你的解釋。但有關覆蓋模板的Fos文檔效率不高。你能告訴我一個例子嗎? –
當然,覆蓋模板需要你在應用程序/資源中創建一個新文件,登錄它會是app/Resources/FOSUserBundle/views/Security/login.html.twig。如果你打算使用多個模板,一個用於管理員,另一個用於前端用戶,那麼你不需要重寫默認模板,而是覆蓋安全控制器本身,只需將自己的模板渲染到任何位置即可。注意保持它們使用的相同標記,因爲login_check使用這些輸入名稱。 – joe42
表單元素的名稱是什麼?我很困惑。沒有真正有效的例子。 –