Использовать HTML-строку как переменную в функции view () [duplicate]

Я достиг этого, используя всего лишь два шага:

Шаг 1: перейдите в AndroidManifest.xml и добавьте параметр в тег - android: parentActivityName = ". home.HomeActivity"

example:

 <activity
    android:name=".home.ActivityDetail"
    android:parentActivityName=".home.HomeActivity"
    android:screenOrientation="portrait" />

Шаг 2: в ActivityDetail добавьте действие для предыдущей страницы / активности

:

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
       case android.R.id.home:
           onBackPressed();
           return true;
    }
    return super.onOptionsItemSelected(item);
 }
16
задан Cy Rossignol 28 September 2017 в 04:46
поделиться

4 ответа

Небольшая модификация приведенного выше сценария. Вы можете использовать эту функцию внутри любого класса без расширения класса BladeCompiler.

public function bladeCompile($value, array $args = array())
{
    $generated = \Blade::compileString($value);

    ob_start() and extract($args, EXTR_SKIP);

    // We'll include the view contents for parsing within a catcher
    // so we can avoid any WSOD errors. If an exception occurs we
    // will throw it out to the exception handler.
    try
    {
        eval('?>'.$generated);
    }

    // If we caught an exception, we'll silently flush the output
    // buffer so that no partially rendered views get thrown out
    // to the client and confuse the user with junk.
    catch (\Exception $e)
    {
        ob_get_clean(); throw $e;
    }

    $content = ob_get_clean();

    return $content;
}
7
ответ дан George John 15 August 2018 в 20:51
поделиться

Я не использую лезвие таким образом, но я думал, что метод компиляции принимает только представление как аргумент.

Возможно, вы ищете:

Blade::compileString()
3
ответ дан Hexodus 15 August 2018 в 20:51
поделиться
  • 1
    $ string = '& lt; h2 & gt; {{$ name}} & lt; / h2 & gt;'; echo Blade :: compileString ($ string, array ('name' = & gt; 'John Doe')); & Quot; имя & Quot; не присваивается шаблону. – Tee Plus 7 June 2013 в 10:36

Это старый вопрос. Но я нашел пакет, который облегчает работу.

Компилятор String Laravel Blade String отображает шаблоны клинков из строкового значения. Проверьте документацию о том, как установить пакет.

Вот пример:

$template = '<h1>{{ $name }}</h1>';  // string blade template

return view (['template' => $template], ['name' => 'John Doe']);
1
ответ дан Raghavendra N 15 August 2018 в 20:51
поделиться
  • 1
    Отлично! Спасла мою жизнь сэр! Благодаря! – Thalis Vilela 23 January 2018 в 20:07
  • 2
    Ответы выше будут решать проблему без какого-либо пакета. – vectorialpx 29 January 2018 в 23:34

Я нашел решение, расширив BladeCompiler.

<?php namespace Laravel\Enhanced;

use Illuminate\View\Compilers\BladeCompiler as LaravelBladeCompiler;

class BladeCompiler extends LaravelBladeCompiler {

    /**
     * Compile blade template with passing arguments.
     *
     * @param string $value HTML-code including blade
     * @param array $args Array of values used in blade
     * @return string
     */
    public function compileWiths($value, array $args = array())
    {
        $generated = parent::compileString($value);

        ob_start() and extract($args, EXTR_SKIP);

        // We'll include the view contents for parsing within a catcher
        // so we can avoid any WSOD errors. If an exception occurs we
        // will throw it out to the exception handler.
        try
        {
            eval('?>'.$generated);
        }

        // If we caught an exception, we'll silently flush the output
        // buffer so that no partially rendered views get thrown out
        // to the client and confuse the user with junk.
        catch (\Exception $e)
        {
            ob_get_clean(); throw $e;
        }

        $content = ob_get_clean();

        return $content;
    }

}
15
ответ дан Viktor Jarnheimer 15 August 2018 в 20:51
поделиться
  • 1
    Спасибо, это очень помогло. Чтобы помочь кому-то вроде меня, я могу добавить к вашему сообщению, что способ создания пользовательского расширения компилятора - передать путь объявления экземпляра файловой системы к компилируемым представлениям конструктору: $myBlade = new MyBlade(App::make('files'), App::make('path').'/storage/views'); – Felice Ostuni 5 February 2014 в 11:45
  • 2
    Как вы получили laravel для использования этого компилятора? – mrwaim 15 June 2015 в 04:54
Другие вопросы по тегам:

Похожие вопросы: