[PHP] Проблем с Домашно -Лекция 8


0

Имам следната ситуация.
Имам си модули и вю-та.
Обаче нещо ми трещи. и не ми работят нещата както трябва.
Да знаете защо не се предава параметъра от функцията към вю файла ?






Отговори



1

Параметъра се предава, но променливата се казва така, както си я декларирал във функцията render(). В твоя случай е $data. Имаш два варианта да го поправиш.

1. Ако имаш само една променлива, го остави така и в шаблона просто ползвай $data.

2. Предавай масив на функцията render и в шаблона вземай елементите от масива.

Така извикваш функцията:

    render(array('authors' => $authors), '../views/layouts/addautor.php');

А така ползваш данните в шаблона:

    <?php while($row = $data['authors']->fetch_assoc()) { ?>

 

Може да ползваш и функциите compact и extract, но не ги препоръчвам, защото затрудняват проследяването на променливите в кода. Ето все пак как става номера с тях:

Викаш функцията render така:

    render(compact('authors'), '../views/layouts/addautor.php');

После в дефиницията на render() добавяш extract:

    function render($data, $file){

        if ($file && is_readable($file)) {

            extract($data);

            include $file;
        }
    }
 
Накрая в шаблона ползваш оригиналните имена на променливите (така, както си ги подал на compact):

    <?php while($row = $authors->fetch_assoc()) { ?>

 


от Борислав (0 точки)


0
Мерси :) Стана така

от lisi4ok (40 точки)


0
Като начало покажи каква е грешката и второ render($authors,'../views/layouts/addautor.php'); - addautor.php или addauthor.php e ? А това предполагам сега си го махнал за да не вижда не е по принцип така - $db = new mysqli('','','',''); // db connection . И трето променливата на функцията ти се казва $data , а във view-то търсиш $authors

от TeodorTunev (3061 точки)