Các kiến thức nền tảng lập trình laravel framework

Lập trình laravel framework

Các kiến thức nền tảng lập trình laravel framework

  1. Hướng dẫn cài đặt laravel Framework
    • Cài global laravel trên mac : composer global require laravel/installer

    • sudo nano ~/.bashrc sau đó soạn export PATH=”$HOME/.composer/vendor/bin:$PATH”

    • Chạy source ~/.bashrc

    • Cài global laravel trên ubuntu
    • Giống mac nhưng là 2 dòng dưới: export PATH=”$PATH:~/.config/composer/vendor/bin” alias laravel=’~/.config/composer/vendor/bin/laravel’

    • sudo composer create-project –prefer-dist laravel/laravel testlaravel
    • Cấu hình database trong .env

    •  Ngay sau khi cài xong cd vào thư mục dự án rồi chạy lệnh: (Kiểm tra đã có ui:Auth chưa bằng lệnh php artisan list)
      • composer require laravel/ui
      • php artisan ui:auth(Tạo login và register)
      • php artisan ui:controllers
    • Lệnh trong laravel: php artisan xxx ví dụ :

php artisan make:migration create_users_table –create=users

php artisan make:migration create_logs_table –create=logs

         php artisan make:migration create_transactions_table –create=transactions

php artisan make:controller loginController (không tạo phương thức đi kèm)

php artisan make:controller Test –resource (tạo các phương thức index,create,show,edit,update,destroy sẵn đi kèm)

 

Màu xanh là tên file .php màu tím là tạo tên bảng trên database

Các file .php sẽ được tạo ra và lưu trong thư mục database/migrations

php artisan migrate để tạo toàn bộ các bảng vào database đã được khai báo khi cấu hình trong database/migrations

php artisan migrate:refresh làm mới lại các table trên cơ sở dữ liệu

    • Layout nằm trong :
      • Views các file có dạng xxx.blade.php
    • Muốn sử dụng thư viện nào dùng use:
      • Ví dụ:
        • use DB (sử dụng thư viện database)
        • use Session (sử dụng thư viện session)

 

Phát triển dự án PHP với mô hình MVC

AJAX, Xử lý XML/JSON trong PHP

Lập trình nâng cao với PHP

trong web.php

Route::get(‘/’, function () {
// return view(‘welcome’);
return view(‘main’, [‘name’ => ‘Phovv’,’age’=>44]);
});

Route::get(‘/products’, [ProductsController::class,’index’]);

(cần khai báo use App\Http\Controllers\ProductsController; trước đó)

Route::get(‘pro’,’App\Http\Controllers\ProductsController@index’);

Pattern

Route::get(‘/products/{id}/{name}’, [ProductsController::class,’hien’]) -> where(‘id’,'[0-9]+’);

Route::get(‘/products/{id}/{name}’, [ProductsController::class,’hien’]) -> where(‘name’,'[a-zA-Z0-9]+’);

Route::get(‘/products/{id}/{name}’, [ProductsController::class,’hien’]) ->

where([‘id’=>'[0-9]+’,’name’=>'[a-zA-Z]+’]);

trong blade

<h1>Mr {{ $name}}</h1>
<hr/>
<h2>Age {{ $age}}</h1>
<hr/>
current time is
{{ time() }}
<hr/>
current date is
{{ now() }}

@include(‘header’)
<hr/>
@include(‘body’)
<hr/>
@include(‘footer’)
@unless (Auth::check())
You are not signed in.
@else
You are signed in.
@endunless

@switch($age)
@case(1)
First case…
@break

@case(2)
Second case…
@break

@default
Default case…
@endswitch
{{– This com — }}

@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor

@foreach ($users as $user)
<p>This is {{ $user}}</p>
@endforeach

@php
$lop = 12
@endphp
@while ($lop<40)
<p>I’m looping forever. {{$lop}}</p>
@php
$lop += 1
@endphp
@endwhile

            Dynamic route:

Route::get(‘/user/{id}’, function ($id) {
return view(‘pages.detail.’.$id);
// return ‘User ‘.$id;
});

Route::get(‘/{dir}/{file}’, function ($dir,$file) {
return view(‘pages.’.$dir.’.’.$file, [‘name’ => ‘hai’,’age’=>44,’users’=>[‘anh’,’hai’]]);
});

Route::get(‘/{leve1}/{level2}/{level3}/{file}’, function ($level1,$level2,$level3,$file) {
return view(‘pages.’.$level1.’.’.$level2.’.’.$level3.’.’.$file, [‘name’ => ‘hai’,’age’=>44,’users’=>[‘anh’,’hai’]]);
});

asset()

 nếu không khai báo giá trị cho ASSET_URL (.env) mặc định sẽ lấy đường dẫn hiện thời ví dụ https://thoaimaichon.com/chuỗi trong hàm asset nếu chuỗi đó không chứa x:// còn nếu chứa x:// thì chỉ lấy chuỗi đó.

Hosting ứng dụng web PHP

https://laravel.thoaimaichon.com

các function sử dụng

        1. {{str_replace(‘_’,’-‘,app()->getLocale())}}
        2. With @extends you just extend your layout blade file.
        3. With @include you include exactly view to the place where you write that code.

php artisan route:list liệt kê các route hiện có

Route::get(‘/json’, function () {

return response()->json([‘name’=>’pho’,’age’=>’44’]);

});

Sự khác biệt url và asset

{{ url(‘search’,[‘dienmay’,’tivi’,’Sony’]) }} kết qủa trả về là …/search/dienmay/tivi/Sony

{{ url(‘search’,[‘dienmay’,’tivi’,’Sony’]) }} kết quả trả về là …/search

Cài npm , nodejs

npm install

cấu hình file webpack.mix.js

const mix = require(‘laravel-mix’);

/*

|————————————————————————–

| Mix Asset Management

|————————————————————————–

|

| Mix provides a clean, fluent API for defining some Webpack build steps

| for your Laravel application. By default, we are compiling the Sass

| file for the application as well as bundling up all the JS files.

|

*/

mix.react(‘resources/js/SP_all.js’, ‘public/js’)

.sass(‘resources/sass/app.scss’, ‘public/css’);

Sau khi khai báo file

webpack.mix.js chạy npm run dev (npm run watch để theo dõi) để chạy webpack đóng gói js, css vào thư mục public mong muốn

Thư viện liên quan DB

use Illuminate\support\facades\DB;

publicfunctionshow($id)
{
$page=DB::select(‘select * from users where id = :id’,[‘id’ => $id]);
// $tb = DB::table(‘users’)->where(‘id’,$id)->get();

$tb = DB::table(‘users’)->select([‘name’,’email’,’id’])->wherebetween(‘id’,[$id,$id+2])->get();

// dd($tb);
// dd($page);
returnview(‘pages.find’,[‘result’=>$page,’tb’=>$tb]);
}
publicfunctionshow($id)
{
$page=DB::select(‘select * from users where id = :id’,[‘id’ => $id]);
// $tb = DB::table(‘users’)->where(‘id’,$id)->get();
$tb = DB::table(‘users’)->select([‘name’,’email’,’id’])->wherebetween(‘id’,[$id,$id+2])

->orwhere(‘id’,’>’,$id)

->get();
// dd($tb);
// dd($page);
returnview(‘pages.find’,[‘result’=>$page,’tb’=>$tb]);
}
publicfunctionshow($id)
{
$page=DB::select(‘select * from users where id = :id’,[‘id’ => $id]);
// $tb = DB::table(‘users’)->where(‘id’,$id)->get();
$tb = DB::table(‘users’)->select([‘name’,’email’,’id’])->wherebetween(‘id’,[$id,$id+2])
->orwhere(‘id’,’>’,$id)

->orwhere(‘name’,’xx’)

->get();
// dd($tb);
// dd($page);
returnview(‘pages.find’,[‘result’=>$page,’tb’=>$tb]);
}
publicfunctionshow($id)
{
$page=DB::select(‘select * from users where id = :id’,[‘id’ => $id]);
// $tb = DB::table(‘users’)->where(‘id’,$id)->count();
// $tb = DB::table(‘users’)

 ->insert([‘name’=>now().’xxxxxxx’,’email’=>now().’vu@gmail.com’,’password’=>’fsadfsdafds’])

// ;
$tb = DB::table(‘users’)

->where(‘id’,’=’,$id)

->update([‘name’=>now(),’email’=>now().now().’@gmail.com’,’password’=>’fsadfsdafds’])

;
// $tb = DB::table(‘users’)
// ->select([‘name’,’email’,’id’])
// ->wherebetween(‘id’,[$id,$id+9])
// ->avg(‘id’)
// ->orwhere(‘id’,’>’,$id)
// ->distinct()
// ->oldest()
// ->inRandomOrder()
// ->orderBy(‘name’,’desc’)
// ->wherenotnull(‘created_at’)
// ->orwhere([‘name’=>’phovv’,’id’=>3])
// ->find(1)
// ->get()
// ->first()
;
dd($tb);
// dd($page);
returnview(‘pages.find’,[‘result’=>$page,’tb’=>$tb]);
}

$tb = DB::table(‘users’)

->where(‘id’,$id)

->delete()

;

use App\Models\Car;

class CarsController extends Controller

public function index()

{

// $cars = Car::all();

$cars = Car::where([‘name’=>’Audi’])->orwhere([‘name’=>’BMW’]) ->get();

// dd($car);

returnview(‘index’,[‘cars’=>$cars]);

}

$cars = Car::where(‘id’, ‘>’, 1)->first();

$id =1;

// $cars = Car::find($id);

$cars = Car::findOrFail($id);

$cars = Car::where(‘name’, ‘like’ , ‘%d%’)->take(10)->get();

public function store(Request $request)

{

$car = new car;

$car->name = $request->name;

$car->founded = $request->founded;

$car->description = $request->description;

$car->save();

return redirect(‘/cars’);

// echo $request->name;
// echo “<hr>”;
// echo $request->founded;
// echo “<hr>”;
// echo $request->description;
// $cars = Car::all();
// return view(‘cars.index’,[‘cars’=>$cars]);
}

public function edit($id)

{

$car = Car::where(‘id’,$id)->get();

// dd($cars);

return view(‘cars.edit’,[‘car’=>$car]);

}

public function update(Request $request, $id)

{

$car = Car::where(‘id’,$id)->first()->update([

‘name’=>$request->name,

‘founded’=>$request->founded,

‘description’=>$request->description,

]);

returnredirect(‘/cars’);

}

API:

Khai báo trong api.php

Route::apiresource(‘/post’,’App\Http\Controllers\Api\PostController’)->except([‘index’,’show’]);

Route::apiresource(‘/post’,’App\Http\Controllers\Api\PostController’)->only([‘index’,’show’]);

Route::get(‘/users’, function () {

returnUserResource::collection(User::all());

});

Route::get(‘/alluser’, function () {

returndd(newUserResource(User::all()));

});

         Cách migrate:refresh table chỉ định

How to migrate:reresh specific table ?

php artisan migrate:refresh –path=/database/migrations/2021_03_18_143031_create_admins_table.php

Sử dụng extension REST Client để debug Api trực tiếp trên Vscode thay Postman

 

Route không tồn tại thì sẽ chuyển hướng đến câu lệnh

Route::any(‘{slug}’, function () {

return  ‘Không tồn tại đường dẫn’;

});

npm install && npm run dev

php artisan ui react

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *