簡體   English   中英

Phalcon PhP-如何在.volt視圖中使用$ this-> acl-> is

[英]Phalcon PhP - how to use $this->acl->isAllowed in .volt view

我正在使用ACL控制權限的Phalcon 2.0.13項目中。 我的問題是:我可以在.volt視圖中使用isAllowed嗎?

我的目標是根據用戶權限控制在.volt視圖中顯示的某些選項。

只是為了澄清我的意思是:

    if( !$this->acl->isAllowed( $userRole, ucfirst( $this->dispatcher->getControllerName() ), $this->dispatcher->getActionName() ) ){
        $this->response->redirect( $this->url->get(['for' => 'admin-index-login']) );

    }

這是我在基本控制器中運行的一段代碼,我想在.volt視圖中檢查權限,例如{{ if isAllowed("User", "New") }} xxxx {{ endif }}

謝謝你的幫助

這是我要做的解決。 我的權限系統位於數據庫中,因為管理員可以為角色,用戶組或特定用戶設置權限。

  1. 當用戶登錄系統時,我將其所有權限保留在會話中
  2. 我沒有使用acl(我之前做過),而是創建了一個函數來檢查用戶在控制器/操作中是否具有權限(我的權限基於控制器和操作,例如ACL)。
  3. 我創建了一個自定義函數以在.volt視圖中使用:

      $compiler = $volt->getCompiler(); //Custom volt functions $compiler->addFunction('has_permission', function($resolvedArgs, $exprArgs) { return '\\HelperFunctions::UserHasPermission(' . $resolvedArgs . ')'; }); 

UserHasPermission接收控制器名稱和操作名稱,以檢查用戶是否具有權限。 我正在這樣使用它:

    {% if has_permission("user", "*") %}

    <li>
        <a href="#" title="Users"><i class="fa fa-lg fa-fw fa-user"></i> <span class="menu-item-parent">Users</span></a>
        <ul>
            <li>
                <a href="{{ url(['for': 'admin-user-index']) }} " title="Users"><span class="menu-item-parent">Users</span></a>
            </li>
        </ul>
    </li>

    {% endif %}

動作名稱中的*表示用戶是否有權在任何UserController動作中使用。

到目前為止,我對解決方案感到滿意,並且如果要在某個時候切換回Phalcon的ACL,這非常簡單。

如果將acl添加為服務,則只需執行以下操作:

{% if acl.isAllowed("User", "New") %}

{% endif %}

無需定制伏特功能。 基於Phalcon ACL Memory的數據庫比數據庫具有更多的選擇,並且無論如何它都更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM