【问题标题】:Is there a better way to send variables to blade?有没有更好的方法将变量发送到刀片?
【发布时间】:2014-05-28 14:14:38
【问题描述】:

我还在学习 Laravel 以及刀片系统是如何工作的......

我想知道做某事的更好方法是什么?我已经完成了一个查询以从数据库中提取一行,然后我想将该查询放入一个数组中,这样我就可以挑选出我想要的任何列。

然后我想将它传递给我的 home.blade.php 并能够使用 {{ $name }} 例如。 T

这就是我所拥有的:

注意:这是按我想要的方式工作的,但我确定我在做很长的路(错误)。

HomeController.php

<?php
class HomeController extends BaseController {
    public function home() {

        $hero_query = DB::table('heros')->where('owner_id', Auth::user()->id)->pluck('hero');

        if($hero_query) {
            $owner_id = Auth::user()->id;
            $user = DB::table('heros')->where('owner_id', $owner_id)->first();

            $name = $user->hero;
            $level = $user->level;
            $exp = $user->exp;
            $str = $user->str;
            $atk = $user->atk;
            $def = $user->def;
            $int = $user->int;
            $blk = $user->blk;


            return View::make('home', array(
                'name'  => $name,
                'level' => $level,
                'exp'   => $exp,
                'str'   => $str,
                'atk'   => $atk,
                'def'   => $def,
                'int'   => $int,
                'blk'   => $blk
            ));
        } else {
            return View::make('home');
        }
    }
}

home.blade.php

@if($hero = DB::table('heros')->where('owner_id', Auth::user()->id)->pluck('hero'))  
                <form action="{{ URL::route('hero-delete') }}" method="POST">
                    Your hero:<br> 
                    <b>{{ $hero; }}</b> | <input type="submit" value="Delete"><br>
                    <b>Stats:</b> 
                        LvL: {{ $level }}
                        Exp: {{ $exp }}
                        Str: {{ $str }}
                        Atk: {{ $atk }}
                        Def: {{ $def }}
                        Int: {{ $int }}
                        Blk: {{ $blk }}
                </form>
            @else
                <form action="{{ URL::route('hero-create') }}" method="POST">
                    Hero:<br>
                    You do not have a hero, create one!
                    <input type="text" name="hero">
                    <input type="submit" value="Create hero">

                    @if($errors->has('hero'))
                        {{ $errors->first('hero')}}
                    @endif

                    {{ Form::token()}}
                </form>
            @endif

现在我确定我是在以某种愚蠢的方式做这件事,因为我刚刚开始......但是有人可以解释我哪里出错了吗?

提前致谢!

【问题讨论】:

    标签: php laravel laravel-4 blade


    【解决方案1】:

    只需将整个$user 传递给视图

    $user = DB::table('heros')->where('owner_id', $owner_id)->first();
    return View::make('home', array('user' => $user));
    

    那么在你看来

    Str: {{ $user->str }}
    Int: {{ $user->int }}
    

    等等。

    【讨论】:

    • 啊啊啊,我太笨了;我懂了。所以我实际上不必为我的 home.blade 声明数组的结果就可以看到它?而是它推动整个阵列,然后我可以从 home.blade 内部从中选择?谢谢!对不起,这是一个愚蠢的问题!
    • @user3245541 - 除了它不是一个数组,它是一个对象
    • @Mark Ba​​ker 刚才所说的 - 您将 $user“对象”传递给视图并在那里继续使用它,而不是 $user 的数组。使您能够继续在视图中使用 Eloquent 对象函数。
    【解决方案2】:

    你做错了很多事情:(

    我修复了一点代码,但我没有测试它,所以以此为指导来实现你想要的。

    class HomeController extends BaseController {
    
        public function home() {
    
            $hero = Hero::where('owner_id', '=', $owner_id)->first();
    
            if($hero)
            {   
                return Response::make('home', array('hero' => $hero->toArray()));
            }
            else
            {
                return Response::make('home');
            }
        }
    }
    

    刀片模板

    @if(isset($hero))
        {{ Form::open(array('route' => 'hero-delete', 'method' => 'DELETE')) }} 
            Your hero:<br> 
            <b>{{ $hero->hero }}</b> | <input type="submit" value="Delete"><br>
            <b>Stats:</b> 
            <!-- Here you can implement a foreach for performance -->
                LvL: {{ $hero->level }}
                Exp: {{ $hero->exp }}
                Str: {{ $hero->str }}
                Atk: {{ $hero->atk }}
                Def: {{ $hero->def }}
                Int: {{ $hero->int }}
                Blk: {{ $hero->blk }}
        {{ Form::close() }}
    @else
        {{ Form::open(array('route' => 'hero-create')) }}
            Hero:<br>
            You do not have a hero, create one!
            <input type="text" name="hero">
            <input type="submit" value="Create hero">
    
            @if($errors->has('hero'))
                {{ $errors->first('hero')}}
            @endif
        {{ Form::close() }}
    @endif
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 2015-03-16
      相关资源
      最近更新 更多