2017-03-31 1 views
0

Ich bin ein Anfänger in Laravel, und ich bin fest :)Laravel Ausgang einreihig von Datenbank

Ich bin ein einfaches CMS für einen Kunden mit einer eher einfachen Website zu bauen. Ich habe eine Datenbank für den gesamten Text auf der Website erstellt, den ich bearbeiten möchte. Alles CRUD funktioniert, aber ich kann nicht scheinen, den Inhalt von der Datenbank, mit Blatt, zur tatsächlichen Ansicht auszugeben, da ich den Fehler bekomme, dass die Variable nicht existiert.

Ich dachte, ich würde so etwas tun {{$ text -> "spezifische ID einfügen"}} Meine Tabelle hat Strings für IDs, um den jeweiligen Text-Inhalt über die Website zu identifizieren.

Ich habe einen MainController und einen TextController, der sich mit der CRUD der Textelemente beschäftigt.

Ich vergesse wahrscheinlich eine einfache Sache, aber ich kann einfach nicht scheinen, es auszuarbeiten.

<?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) 
{ 
    // 
} 

}

Ich würde denken, dass ich etwas in der 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'); 
} 

bin fehlen könnte das sein?

Vielen Dank im Voraus!

+0

Diese Videos sollten helfen: https://laracasts.com/series/laravel-from-scratch-2017/episodes/5 und https://laracasts.com/series/laravel-from -scratch-2017/episoden/8 –

Antwort

0
public function index() 
{ 
    $texts = Text::all(); 

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

Dann in Ihrer Sicht:

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

auch kompakt() akzeptieren ein Array. Sie können so etwas tun compact(['first', 'second', 'third'])

+0

Danke! Ich sehe was ich falsch gemacht habe :) aber jetzt bin ich mir nicht sicher, wie ich eine bestimmte ID aus dieser Textdatenbank ausgeben soll? –

+0

Gleicher Weg: 'öffentliche Funktion bearbeiten ($ ID) { $ Text = Text :: findOrFail ($ ID); Rückansicht ('texts.edit', compact ('text')); } ' dann in der Ansicht: ' $ text-> id $ text-> content' –

+0

Aber das tut mir einen spezifischen ID. Die Tabelle hat eine Zeichenfolge für EN-ID: "forside_tekst" und dann den Inhalt: "Beispiel", und ich muss den Inhalt ausgeben, wie gebe ich an, dass die "forside_tekst" ist die ID, die ich möchte –

1

Mit with() blinkt Inhalt zu einer Sitzung, sondern müssen Sie in den Variablen zur Ansicht übergeben

view('index', $data) 

Wo $data die Daten aus der Datenbank.

+0

Danke für Ihre Hilfe! Muss ich etwas im TextController ändern oder kann ich das alleine im MainController tun? –

+0

Sie sollten wirklich die Dokumente lesen, es ist erstaunlich, wie einfach solche Dinge dort drüben erklärt werden. https://laravel.com/docs/5.4/views. – Ian

+0

Sie haben Recht! Ich habe versucht, viele Suchergebnisse aus dem Dokument zu lesen, aber mein Problem war, dass ich nie den richtigen gefunden habe :) Aber vielen Dank! –

0

In Controller müssen Sie Daten wählen Sie

$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 

// anzuzeigen übergeben wollen und geben es dann als zweiten Parameter (Array) in View-Funktion zu sehen)

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

// dann im Hinblick

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

or 
{{$text->content}}