Autor Zpráva
jefitto44
Profil
Takto to u mňa vyzerá
MODEL
public function getHomeSite() {
        $data = $this->db->get_where("page", array("page_id" => 1));
        foreach($data->result() as $item) {
            $return["page_id"]  = $item->page_id;
            $return["title"]    = $item->title;
            $return["content"]  = $item->content;
            $return["datetime"] = $item->datetime;
            $return["user_id"]  = $item->user_id;
        }
        
        return $return;
    }
CONTROLLER:
public function index()
    {
        $data = $this->model->getHomeSite();
        $this->load->view("layouts/head");
        $this->load->view('welcome_view', $data);
    }
VIEW:
<div class="main col-md-8">
                <?php echo $data->title ?>
            </div><!--main-->

Premenná $data je vo view ako "undefined variable" a už dve hodiny sa trápim prečo, resp. ako prepasírovať data z premennej v controlleri do view-u... robím to podľa návodov v dokumentácií a stack overflow, ale nefunguje mi nič :(

Short open tags mam aktivovane


respektíve ešte som skúšal vo view aj <? var_dump($data) ?> a furt undefined variable
xROAL
Profil
Je to už nejaký čas, čo som robil s CI, no ak si správne pamätám, premenné sa do view predávajú ako pole.

V tvojom prípade je $data samé o sebe pole, vo view teda budú pravdepodobne dostupné len jeho prvky (teda $page_id, $title, atď.).

Ak ku tomu vo view chceš pristupovať ako k poli, skús $this->load->view('welcome_view', array($data));.
Edit: <?php echo $data->title ?> takto sa nepristupuje k prvkom poľa, alebo k atribútom objektu. Použi $data['title'], prípadne do view predávaj objekt, ak chceš túto syntax zachovať.
jefitto44
Profil
Zrejme rozumiem, čo píšeš, ale najskôr to budem môcť vyskúšať v nedeľu večer, keĎže dovtedy som away from my PC. Každopádne budem na to pamätať
petr
Profil *
1) ten model si musíte v controlleru předem načíst (pokud ho nemáte v autoloadu)
2) a k modelu se pak přistupuje přes jeho název:
class Blog_controller extends CI_Controller {

    function blog()
    {
        $this->load->model('Blog');

        $data['query'] = $this->Blog->get_last_ten_entries();

        $this->load->view('blog', $data);
    }
}
3) musíte být před tím připojený k databázi, nebo ten model loadovat s třetím parametrem: $this->load->model('Model_name', '', TRUE);

viz ellislab.com/codeigniter/user-guide/general/models.html
jefitto44
Profil
Petr, mám to presne tak... model je v autoloade, lebo v celom controlleri ho budem využívať vo všetkých metódach, tak aby som ho nemusel furt volať v každej metóde.
K modelu prístup mám, všetko mi funguje, iba vo view sa neviem dostať k premenným...

Tie $data v controlleri musia byť ako array() ?
xROAL
Profil
jefitto44:
Tie $data v controlleri musia byť ako array() ?
Predávanie dynamických dát do view - www.codeigniter.com/.../views.html#adding-dynamic-data-to-the-view

V controlleri:
$data = array(
  'title' => 'Môj nadpis',
  'id' => 1
);
$this->load->view('view', $data);

Vo view:
<?= $title ?> vypíše Môj nadpis.
<?= $id ?> vypíše 1.
Samotné $data však vo view neexistuje.
jefitto44
Profil
jaj tak, toto som potreboval vedieť.
Kcko
Profil
jefitto44:
Tak se podívej do dokumentace www.codeigniter.com/user_guide/general/views.html

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: