Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 18.11.2013 08:22:54

L4. Ajax запросы и шаблон

Добрый день.
Ситуация такова. Есть страница, на которой необходимо загружать данные по средством аякса (админская часть),
Нужно сформировать какие либо данные, отрендерить шаблон и все это вернуть json массивом.
Вроде все ок получается, но возникает странная ситуация.
В роутинг и код отправки запроса думаю вникать не стоит, странности творятся в контроллере. Если делать так

    public function testJson(){
        $out = array();
        if(Request::ajax()){
            $out['jsonContent'] = array(View::make('admin.testAjax'));
        }
        return $out;
    }

то в бразузер приходит пустой массив, а если сделать так

    public function testJson(){
        $out = array();
        if(Request::ajax()){
            $out['jsonContent'] = array(View::make('admin.testAjax').'');
        }
        return $out;
    }

или так

 
    public function testJson(){
        $out = array();
        $responce = '';
        if(Request::ajax()){
            $responce .= View::make('admin.testAjax');
            $out['jsonContent'] = array($responce);
        }
        return $out;
    }

то все нормально, необходимые данные возвращаются.
Что здесь не так??? Есть ли какой либо еще специльный метод для обработки шаблонов?
Сервер Apache, пробовал на двух версиях php 5.4.4 и 5.5.5, может где-нибудь у меня не правильные настройки сервера? Так как арендую сервак без всяких лишних панелей управления и все настройки делаю вручную.

Изменено sharov (18.11.2013 08:24:38)

Не в сети

#2 18.11.2013 11:41:19

Artdevue
Откуда: Kiev
Сообщений: 119
Сайт

Re: L4. Ajax запросы и шаблон

и все это вернуть json массивом

В лоб не вижу у вас возврата json
Если возвращаете json, так и возвращайте его

return Response::json($array);

У вас получается аякс или не аякс, всё равно вернёт ответ 200 ?
И возвращаете вы обычный массив?


If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.

Не в сети

#3 18.11.2013 12:49:41

Re: L4. Ajax запросы и шаблон

Artdevue пишет:

В лоб не вижу у вас возврата json

следуя докам ларавел вернет ответ в json даже без явного указания если запрос данных пришел через ajax

Artdevue пишет:

И возвращаете вы обычный массив?

а можно вернуть волшебный? smile

Artdevue пишет:

У вас получается аякс или не аякс, всё равно вернёт ответ 200 ?

с роутингом все ок

А вопрос явный почему View::make('admin.testAjax') вернет пустое значение, а View::make('admin.testAjax').'' или (string)View::make('admin.testAjax') вернет то что было в шаблоне

Не в сети

#4 18.11.2013 14:01:03

Cheshirrski
masterМастер
Откуда: Днепр
Сообщений: 116
Статей: 2

Re: L4. Ajax запросы и шаблон

Сделайте dd(View::make(’admin.testAjax’)) и посмотрите насколько это «пустое значение». А преобразовав View::make(’admin.testAjax’) в строку вы и получаете строку.

Не в сети

#5 18.11.2013 14:31:15

Re: L4. Ajax запросы и шаблон

Cheshirrski пишет:

}%Сделайте dd(View::make('admin.testAjax')) и посмотрите насколько это "пустое значение". А преобразовав     View::make('admin.testAjax') в строку вы и получаете строку.

хм...
ясно, а тогда не подскажете как отрендерить шаблон и получить на выходе строку а не объект?
мне надо в браузер вернуть массив

$out['content'] = array(
    'то что получилось после обработки шаблона',
    'append'
)

Изменено sharov (18.11.2013 14:31:34)

Не в сети

#6 18.11.2013 15:25:06

vanchelo
Откуда: Украина, Киев
Сообщений: 32
Сайт

Re: L4. Ajax запросы и шаблон

Ну вы хоть доки изредка читайте

View::make('admin.testAjax')->render()

Не в сети

#7 18.11.2013 15:53:27

vanchelo
Откуда: Украина, Киев
Сообщений: 32
Сайт

Re: L4. Ajax запросы и шаблон

Открываем исходники класса View, видим что когда вы пытаетесь преобразовать класс в строку вызывается метод __toSting(), а в нем мы видим:

public function __toString()
{
    return $this->render();
}

Т.е. тоже самое что я вам написал выше

Чаще смотрите в исходный код, потому что в официальной документации не всегда все данные и моменты отображены
https://github.com/laravel/framework/bl … w.php#L351

Изменено vanchelo (18.11.2013 15:54:02)

Не в сети

#8 18.11.2013 17:17:11

Re: L4. Ajax запросы и шаблон

Пока не до конца разобрался с идеологией фреймворка, да и исходниками
Пытался вызвать View::render() напрямую
Спасибо за помощь.

Не в сети

#9 18.11.2013 17:22:00

vanchelo
Откуда: Украина, Киев
Сообщений: 32
Сайт

Re: L4. Ajax запросы и шаблон

>>> Пытался вызвать View::render() напрямую
Так ничего не выйдет, потому что метод render применим только к объекту класса View, это не статический метод. Еще советую почитать документацию на php.net что такое классы

Не в сети

#10 18.11.2013 17:24:31

vanchelo
Откуда: Украина, Киев
Сообщений: 32
Сайт

Re: L4. Ajax запросы и шаблон

То что вы видете в Ларавел 4 через :: это не тоже самое что и в Ларавел 3. Если вы опять же, посмотрите в исходный код Л4, то статических методов вы там почти не найдете (их там очень мало), а View::make() это всего лишь обертка над app('view')->make() или App::make('view') или $app['view'] в зависимости от контекста, т.к. сказать для удобства

Изменено vanchelo (18.11.2013 17:31:39)

Не в сети

#11 18.11.2013 18:26:35

Artdevue
Откуда: Kiev
Сообщений: 119
Сайт

Re: L4. Ajax запросы и шаблон

sharov пишет:
Artdevue пишет:

И возвращаете вы обычный массив?

а можно вернуть волшебный? smile

вы же сами написали - вернуть json массивом. Так-что называйте как хотите.

sharov пишет:
Artdevue пишет:

У вас получается аякс или не аякс, всё равно вернёт ответ 200 ?

с роутингом все ок

Если всё Ок, тогда смысл проверять ещё раз на аякс в контролере? Если я вас правильно понял, то вы проверили в роуторе.

А вообще, я больше увидел в ваших сообщениях превосходство в познаниях перед отвечающим. smile
Тогда лучше помолчать....


If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.

Не в сети

Подвал раздела