Laravel 从数据库输出单行

Laravel output single row from database

我是 Laravel 的初学者,我被卡住了:)

我正在为网站相当简单的客户构建一个简单的 CMS。 我已经为整个网站的所有文本创建了一个数据库,我希望能够对其进行编辑。所有 CRUD 都在工作,但我似乎无法使用 blade 将数据库中的内容输出到实际视图,因为我收到变量不存在的错误。

我以为我会做这样的事情{{ $text->"insert specific id" }} 我的 table 有 id 的字符串,用于在整个站点中识别相应的 text-content。

我有一个 MainController 和一个 TextController,这是处理 text-elements 的 CRUD 的那个。

我可能忘记了一件简单的事情,但我似乎无法解决。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Text;
use Session;

class TextController extends Controller
{
/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    $texts = Text::all();

    return view('texts.index')->withTexts($texts);
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    $this->validate($request, array(

        'content' => 'required'
        ));

    $text = new Text;
    $text->content = $request->content;
    $text->save();


    return redirect()->route('texts.index');
}


/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    $text = Text::find($id);
    return view('texts.edit')->withText($text);
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    $text = Text::find($id);
    $this->validate($request, array(

        'content' => 'required'
        ));

    $text->content = $request->content;
    $text->save();

    Session::flash('success', 'Teksten blev ændret!');

    return redirect()->route('texts.index');
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    //
}

}

我认为我在 MainController 中遗漏了一些东西

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Validator;
use Mail;
use Illuminate\Support\Facades\DB;
use Session;
use App\Text;


class MainController extends Controller
{
public function index(){

    return view('index');
}

难道是?

提前致谢!

使用 with() 将内容闪烁到会话,而您需要将变量传递给视图

view('index', $data)

其中$data是数据库中的数据。

在控制器中,您必须select要传递给视图的数据

$texts = Text::get(); //or Text::all(); for all results
$text = Text::find($id); //if you want one item get by ID
$text = Text::where('column', 'value')->first(); //first item matching condition

//然后在视图函数中作为第二个参数(数组)传给视图)

return view('index', ['texts' => $texts, 'text' => $text] /* or compact('texts', 'text') */); 

//然后在视图中

@foreach($texts as $t)
{{$t->content}}
@endforeach

or
{{$text->content}}
public function index()
{
    $texts = Text::all();

    return view('texts.index', compact('texts'));
}

那么在你看来:

@foreach ($texts as $text)
     {!! $text->content !!}
@endforeach

同时 compact() 接受一个数组。你可以这样做 compact(['first', 'second', 'third'])