Search code examples
phpmodel-view-controllerparallax

How do I pass multiple variables to other model like a variable in PHP


I make 1 page parallax site with MCV Model and i want to send all of data of pages to index_view load->view($filename,$data); as 1 $data. I can send all data as load->view($filename,$data_index,$data_about,$data_services,$data_contact); But I think that the way isn't good way. I want to show may site structure.

I have Index_model.php (Model), index.php (Controller) and index_view.php (view) files.

There are navigation Links and index page slogan text functions in Index_model.php:

public function nav(){
    $sql = "SELECT * FROM nav";
    $sth = $this->db->select("SELECT * FROM nav");
    return $sth;
}

public function slogan()
{
    $sql = "SELECT * FROM slogan";
    $row = $this->db->select($sql);
    return $row;
}

Index.php (Controller) page so that..

public function Index(){
    // Include Index_Model
    $index_model = $this->load->model("index");
    // Call Navigation Links functions
    $nav = $index_model->nav();

    $default = $this->defaults();
    // Call slogans
    $slogan = $index_model->slogan();
    $this->load->view('index', $nav, $default);
} 

and View part of Load.php is so..

public function view($filename,$data = false, $default = false){
    include('app/view/'.$filename."_view.php");
}

How can i send my all value to view with 1 $variable. Is it possible. How is made Parallax site in MVC model?


Solution

  • You can put the variables in another array and pass the new array. like this

    public function Index(){
        // Include Index_Model
        $index_model = $this->load->model("index");
        // Call Navigation Links functions
        $nav = $index_model->nav();
    
        $default = $this->defaults();
        // Call slogans
        $slogan = $index_model->slogan();
        $data=[];
        $data['nav']=$nav;
        $data['default']=$default;
        $this->load->view('index', $data);
    }