我的發現者從Auth
有條件,我需要訪問$this->request
,但我不能訪問UsersTable
。傳遞額外數據給發現者驗證
的AppController ::初始化
$this->loadComponent('Auth', [
'authenticate' => [
'Form' => [
'finder' => 'auth',
]
]
]);
UsersTable
public function findAuth(Query $query, array $options)
{
$query
->select([
'Users.id',
'Users.name',
'Users.username',
'Users.password',
])
->where(['Users.is_active' => true]); // If i had access to extra data passed I would use here.
return $query;
}
我需要傳遞一個額外的數據FOM AppController
到finder
auth
因爲我沒有上UsersTable
存取權限$this->request->data
。
更新
人們都在說上評論這是一個糟糕的設計,所以我會正是我需要解釋一下。
我有一個表users
但每個用戶都屬於gym
。 username(email)
只對特定的gym
唯一,所以我可以有[email protected]
從gym_id 1
和另一個[email protected]
從gym_id 2
。 在登錄頁面我有gym_slug
告訴auth finder
至極gym
我提供的用戶username
屬於。
這聽起來像是對我可能是不好的設計,你能顯示你想傳遞什麼?它必須是可能的作爲一種行爲,雖然:-) – Spriz
我通過一個健身房slu at在URL,所以我需要得到基於該slu的健身房ID過濾用戶查找,因爲我有'gym_id'在'用戶'表。我可以通過'this-> request-> params ['gym_slug]'訪問slug,但是我沒有在'UsersTable'上使用accesa。 –
我們需要更多的信息繼續下去。從問題和評論中都可以聽到,也許你正在驗證用戶,然後試圖將他們重定向到他們的健身房頁面?編輯你的問題,並提供你正在做什麼以及爲什麼。你直到上面的評論才提到健身房,我很好奇爲什麼你需要請求數據重定向(如果這就是你正在做的),因爲你已將gym_id存儲在同一個表中。 –