EDIT
In the meantime this question is been visited a few times. Just to share what I´ve learned with the help of stackoverflow and other resources I´d not recommend using the technique I was asking for. A cleaner way is to attach a variable containing the database-text within the controller:
$txt = Model::find(1);
return view('name', array('text' => $txt->content);
Now you can access text in your view like so
{{ $text ?? 'Default' }}
But if you´re currently also hustling with basic oop and/or mvc architecture read on. Maybe it helps :-)
ORIGINAL QUESTION
I´m trying to output some text loaded from db. This is my setup:
View:
{{ ContentController::getContent('starttext') }}
Controller:
class ContentController extends BaseController {
public $text = '';
public static function getContent($description)
{
$content = Content::where('description', $description)->get();
$this->text = $content[0]->text;
return $this->text;
}
}
I was trying various ways to declare a class variable and access it in my function but I always end up with:
Using $this when not in object context
tbh I think I lack some basic oop knowledge :-D
$thisdoes not exist in that context). It's a basic MVC principle, separation of logic (controller) from presentation (view). The docs pretty clearly show this example:View::make('greeting', array(...stuff here...))where "stuff" is whatever you need to pass to the view, from the controller. Let me put it this way: read the docs (laravel.com/docs/responses).Route::get '/' return View::make('homepage')then yes, don't over-engineer. It's not only about the user input. You have Eloquent DB access in a controller with a method that responds with a Blade view. Please don't do Eloquent queries inroutes.php. Please do separate logic, presentation and data storage.