setFlash показывает перед сохранением - PullRequest
1 голос
/ 04 мая 2019

У меня есть веб-приложение cakephp, и для этой конкретной функции проверки контроллера (которая представляет собой представление с некоторыми входными данными и списком продуктов) по какой-то причине setFlash, который я намереваюсь показать после сохранения данных, не работает как так должно быть. Он должен отображаться в представлении indexstock.ctp, куда я перенаправляю пользователя, если сохранение прошло успешно, но вместо этого оно загружается в этом самом представлении checkout.ctp. Я пересматривал этот код бесчисленное количество раз и не могу найти, где находится ошибка, несмотря на нетипичную логику этой функции, части rsetflash и redirect те же, что и во всех остальных функциях этого проекта.

Это моя функция:

public function checkout() {

$this->loadModel('Sale');
if (!empty($this->data)) 
{
    $this->Sale->create();  
    if ($this->Sale->save($this->data)) 
    {

    session_start();
    foreach($_SESSION["shopping_cart"] as $values)
        {   
            $this->Sale->ProductsSale->create();
            $this->Sale->ProductsSale->saveField('sale_id', $this->Sale->id);
            $this->Sale->ProductsSale->saveField('product_id', $values['product_id']);
            $this->Sale->ProductsSale->saveField('cant', $values['product_quantity']);
            $this->Sale->ProductsSale->saveField('price', $values['product_price']);

            $this->Sale->ProductsSale->saveField('shipping_id', $values['product_shipping']);



        $this->Product->ProductsShipping->id = $values['product_psid'];
        $this->Product->ProductsShipping->saveField('sold',$values['product_quantity']);


        }
    $this->Sale->Transaction->create();
    $this->Sale->Transaction->saveField('date',$this->data['Sale']['date']);
    $this->Sale->Transaction->saveField('concept',$this->data['Sale']['details']);
    $this->Sale->Transaction->saveField('sign','+');
    $this->Sale->Transaction->saveField('amount',$_SESSION["total_price"]);
    $this->Sale->Transaction->saveField('sale_id', $this->Sale->id);


    unset($_SESSION["shopping_cart"]);
    //THIS GUY HERE IS THE ONE NOT BEHAVING CORRECTLY
    $this->Session->setFlash('<strong>Exito!</strong> El producto se ha guardado', 'Flash/success');
    $this->redirect(array('action'=>'indexstock'),null, true);
    } else {
        $this->Session->setFlash('<strong>Error!</strong> El producto no se ha guardado', 'Flash/error');
    }
}
$clients = $this->Sale->Client->find('list');
$this->set(compact('clients'));
}

Как мне решить эту проблему?

...