Josh Boiskin
Josh Boiskin

Reputation: 69

Sending a variable to the view which is used in controller with phalconPHP

I have a small issue i have declared a variable of type Boolean in my controller.

$done=False

Now there is a trigger in the controller that would turn it to True and it is at this point i would like to send it to the corresponding view with this controller .. i have used the following.

$done=True;
$this->view->setVar("done", $done);

Now when i try to call it in the corresponding view it does not know anything of this varible.

if($done==True)
{
   echo'
   <div class="alert alert-success">
       <a href="addNewSkill" class="alert-link">Add Another Here!</a>
    </div>
     ';
 }

It gives me the following:

Notice: Undefined variable: done in >C:\xampp\htdocs\Blueware\app\views\addNewSkill\index.phtml on line 36

Now is there a better way of sending this varible through to the view or am i making a mistake?

Full Controller/Action Code:

<?php
        class addNewSkillController extends \Phalcon\Mvc\Controller{

            public function indexAction(){

            }

            public function confirmAction(){

               $this->view->disable();
               $done=False;

                if($this->request->isPost()) {
                    $dataSent = $this->request->getPost();

                    $skill = new Skills();
                    $skill->technology      = $dataSent["technology"];
                    $skill->skillName   = $dataSent["skillName"];
                    $skill->description  = $dataSent["description"];
                    $savedSuccessfully = $skill->save();

                    if($savedSuccessfully) {
                        $done=True;
                        $this->view->setVar("done", $done);
                    } else {
                        $messages = $skill->getMessages();

                        echo "Sorry, the following problems were generated: ";
                        foreach ($messages as $message) {
                            echo "$message <br/>";
                        }
                    }
                } else {
                    echo "The request method should be POST!";  
                }



            }


        }

Full View Code:

<?php
if($done==True)
{
  echo'
  <div class="alert alert-success">
    <a href="addNewSkill" class="alert-link">Add Another Here!</a>
  </div>
  ';
}


?>

Upvotes: 0

Views: 306

Answers (1)

exussum
exussum

Reputation: 18550

   if($savedSuccessfully) {
        $done=True;
        $this->view->setVar("done", $done);
    } else {

You should be setting the variable there, But setting in the view after seems that its not saving and therefore not passing the variable on

similar to

   if($savedSuccessfully) {
        $done=True;
    } else {
    ...later in code ...

   $this->view->setVar("done", $done);

or even just

   $this->view->setVar("done", $savedSuccessfully);

Upvotes: 1

Related Questions