Cakephp 2.3 beforeFilter и реализованные события не могут сосуществоватьPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Cakephp 2.3 beforeFilter и реализованные события не могут сосуществовать

Сообщение Anonymous »

Использование cakephp 2.3.5.

Я использую beforeFilter в нескольких контроллерах, чтобы разрешить определенные действия без необходимости входа в систему. Я успешно использовал его довольно часто. время. Однако я заметил, что не могу запустить beforeFilter, если контроллер также имеет методimpledEvents().

public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('matchWwiProducts');
}

public function implementedEvents() {
return array(
'Controller.Product.delete' => 'deleteSku',
'Controller.Product.price' => 'notifySubscribers',
'Controller.Product.stock' => 'notifySubscribers'
);
}


Для кода, показанного выше, мне придется войти в систему, если я вызову метод www.example.com/products/matchWwiProducts.

Когда я закомментирую реализованные события(), все работает так, как задумано. Я поискал и не нашел никаких упоминаний о реализацииEvents(), создающей проблемы с beforeFilter.

Действие matchWwiProducts() выглядит следующим образом. Когда я вхожу в систему, все работает отлично. Однако я не хочу принудительный вход в систему для выполнения этого действия.

public function matchWwiProducts() {
// this is an audit function that matches Products sourced by wwi
//
$this->autoRender = false; // no view to be rendered
// retrieve products sourced from wwi from Table::Product
$this->Product->contain();
$wwiProducts = $this->Product->getWwiSkus();
$wwiProductCount = count($wwiProducts);
// retrieve products sourced from wwi from Table:Wwiproduct
$this->loadModel('WwiProduct');
$this->Wwiproduct->contain();
$wwiSource = $this->Wwiproduct->getSkuList();
$wwiSourceCount = count($wwiSource);
// identify SKUs in $wwiProducts that are not in $wwiSource
$invalidSkus = array_diff($wwiProducts, $wwiSource);
// identify SKUs in $wwiSource that are not in $wwiProducts
$missingSkus = array_diff($wwiSource, $wwiProducts);
$missingSkuDetails = array();
foreach ($missingSkus as $missingSku) {
$skuStockStatus = $this->Wwiproduct->getStockStatus($missingSku);
$missingSkuDetails[$missingSku] = $skuStockStatus;
}
$email = new CakeEmail();
$email->config('sourcewwi');
$email->template('sourcewwiaudit', 'sourcewwi');
if (count($invalidSkus) > 0 || count($missingSkus) > 0) {
$email->subject('WWI Source Audit: Invalid or Missing SKUs');
$email->viewVars(array('invalidSkus' => $invalidSkus,
'missingSkuDetails' => $missingSkuDetails,
'wwiProductCount' => $wwiProductCount,
'wwiSourceCount' => $wwiSourceCount));
} else {
$email->subject('WWI Source Audit: No Exceptions');
$email->viewVars(array('wwiProductCount' => $wwiProductCount,
'wwiSourceCount' => $wwiSourceCount));
}
$email->send();
}


Подробнее здесь: https://stackoverflow.com/questions/313 ... o-co-exist
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»