#7 More about Views
제목 그대로, View에 대해서 더 알아보자.
web.php
에 접근하여, 기본URL의 라우터 코드를 다음과 같이 바꿔보자.
Route::get('/', 'PagesController@index');
위 코드의 의미는 이제 쉽게 알 수 있겠지만, PagesController.php
의 index
Function을 사용한다는 말이다.
그렇다면 터미널을 통해서 PagesController
를 만들고 그 안에 index
Function을 만들어보자.
$ artisan make:controller PagesController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use View;
class PagesController extends Controller
{
public function index() {
}
}
app/Http/Controllers/PagesController.php
조금 빠르게 나가보도록 하겠다.
views
디렉토리에 pages
란 디렉토리를 추가하고 그 안에 index.blade.php
를 만든다.
그리고 컨트롤러에서 연결한다. 이때 주의사항은 View가 존재하는지 안하는지에 대한 경우를 나누어서 처리하는 것이다.
완성된index.blade.php
를 살펴보자.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use View;
class PagesController extends Controller
{
public function index() {
if(View::exists('pages.index')){
return view('pages.index');
}else {
return 'No view available';
}
}
}
앞의 내용을 잘 이해했다면, 이정도 코드를 짜는 것은 식은죽먹기다.
이제 localhost:8000/
으로 접속하면resources/views/pages/index.blade.php
가 화면에 뜰 것이다.
이 정도에만 만족하지말고, PagesController
에서 해당 페이지로 데이터를 넘기고 받는 연습을 해보자.
PagesController.php
의 코드를 다음과 같이 수정한다.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use View;
class PagesController extends Controller
{
public function index() {
if(View::exists('pages.index')){
return view('pages.index')
->with('text','<b>Laravel</b>')
->with('name','<b>JeewooYoon</b>')
->with(['location' => 'EastAsia', 'country' => 'SouthKorea']);
}else {
return 'No view available';
}
}
}
정말 직관적으로 짜여진 코드라 이해하기가 쉽다.
view를 띄울때 text라는 변수를 함께 (with) 띄워달라는 요청을 코드로 나타내보았다.
자 그럼 이제 Front단에서 받아보자. index.blade.php
를 연다.
Hello, from index in pages folder.
<p>{!! $text !!}</p>
<p>{{ $text }}</p>
{!! $location !!}
{!! $country !!}
{!! $name !!}
변수는 두가지 형태, {!! !!}, {{ }}
로 받을 수 있다.
형태는 다양하게 넘길 수 있으므로 자유롭게 코드를 짜면 된다.