Laravel - 如何将用户输入的最后一个值返回到视图中

时间:2014-04-24 11:19:06

标签: laravel

我在Laravel为我的网站建立后端。我只需要几个文本框来填充模板。到目前为止,我已设法做到这一点,但每次我将值传递给模板时,我也会看到所有先前的值,而不仅仅是最后一个值。

例如,如果我正在编辑滑块标题,我也会看到所有以前的滑块标题 - 我只想看到最后一个。

我的控制器:

public function store()
{
    $input = Input::all();

    homepage::create([
        'slider_title' => $input['slider_title'],
    ]);

    return Redirect::to('/');
} 

负责显示滑块标题的部分视图:

@foreach ($homepage as $home)
    {{$home->slider_title}}
@endforeach

在admin中查看用户输入:

{{ Form::open(['url' => '/admin']) }}
<div>
    {{ Form::label('slider_title', 'Slider title:') }}
    {{ Form::text('slider_title') }}
</div>

<div>
    {{ Form::submit('Change a slider title') }}
</div>
{{ Form::close() }}

管理员路线:

Route::post('/admin', 'AdminController@store');

主页路线:

Route::get('/', 'PageController@home');

PageController home方法:

 public function home()
  {
    $homepage = Homepage::all();
    return View::make('home')->with('homepage',$homepage);
  }

我尝试用以下内容更改PageControl:

$homepage = Homepage::orderBy('id', 'desc')->first();

但我收到此错误:

ErrorException:在我的视图页面上尝试获取非对象的属性

public function home()
  {
    $homepage = Homepage::all();
    return View::make('home')->with('homepage',$homepage);
  }

1 个答案:

答案 0 :(得分:0)

您正在查看所有幻灯片,因为您正在选择所有幻灯片:

$homepage = Homepage::all();

这应该给你最后一个:

$homepage = Homepage::orderBy('id', 'desc')->first();

$homepage = Homepage::orderBy('created_at', 'desc')->first();

请记住,现在你只得到一个结果,你不能再使用foreach了:

foreach ($homepage as $home)

您可以直接参考:

$homepage->slider_title

如果您仍想返回一个数组以使用foreach,这是一个选项:

$homepage = array( Homepage::orderBy('created_at', 'desc')->first() );