LaravelのRouterでドットシンタックスで指定する’name’が登録されない。
解決した方法。
//routes/web.php
Route::post('item/import/confirm',['as'=>'item.import.confirm','uses'=>'ItemController@importConfirm']);
‘as’ で指定する。実行先は ‘uses’
ルート一覧確認方法
$ php artisan route:list
解決した方法。
//routes/web.php
Route::post('item/import/confirm',['as'=>'item.import.confirm','uses'=>'ItemController@importConfirm']);
‘as’ で指定する。実行先は ‘uses’
ルート一覧確認方法
$ php artisan route:list
jQueryのときは、Class内部のメソッド呼び出し時に$.proxy()をつかってましたが、bind()が楽。
class Foo {
constructor(){
$('#btn1').on('click',this.onClick1);
$('#btn2').on('click',$.proxy(this.onClick2,this);
$('#btn3').on('click',this.onClick3.bind(this));
}
onClick1(e){
console.log(this); //thisのスコープが #btn1のElementになる。
}
onClick2(e){
console.log(this); //thisのスコープがclass Fooになる。
}
onClick3(e){
console.log(this); //thisのスコープがclass Fooになる。
}
}
CakePHPのバーチャルフィールドの様な仮想のフィールドの設定方法。
class User extends Model
{
protected $appends = ['name'];
public function getNameAttribute()
{
return $this->lastname. ' ' .$this->firstname;
}
・
・
・
あとはビューで。以下の様に参照するだけ。
$user->name;
が、うまく行かなく、始めたところでなかなか情報も見つけにくかったのでメモがてら。
<div id="items">
<table>
<tr v-for="(cut,index) in items">
<td>アイテム{{ index+1 }}</td>
<td>
<input class="u-wd200 u-mr10" name="mst_cut" v-model="items[index]"/>
</td>
</tr>
</table>
</div>
LaravelでRESTfulなルーティングをしていまいした。
大きな不満はなかったのですが、3の瞬間になにかしたくなる。or リクエストファイルを作るのが面倒そうなどあり、Modelに無理やり書いてみた。
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
use SymfonyComponentHttpFoundationRequest;
use Validator;
class Products extends Model
{
/**
* create Validator Instance
*
* @param IlluminateHttpRequest $request
* @return IlluminateValidationValidator
*/
public static function getValidator(Request $request)
{
$validator = Validator::make(
$request->all(),
[
'name' => 'required',
'jan' => 'required',
],
[
'name.required' => '名は必須項目です。',
'jan.required' => 'JANコードは必須項目です。'
]
);
return $validator;
}
}
まぁさほどモデルがコードが増えることは無さそうなので、これである程度シンプル・手が届きやすくなりそう。(カスタムリクエストにする方がベストプラクティスっぽくあるが、お一人開発なのでとりあえず。
add,store,update,editなどのアクションで、$requestを受け取って保存するのですが、_token/_methodなどの保存には関連しないフィールドを、Modelへとデータを一つ一つ移していると大変だったので。
※validationとか全く無考慮です。(実際は入力チェックを
public function store(Request $request)
{
$client = new Client;
$params = $request->except('_token'); //_tokenを除いて配列取得
$client->setRawAttributes($params);
$client->save();
return Redirect::route("clients.index");
}
public function update(Request $request, $id)
{
$params = $request->except(['_token','_method']);
Client::where('id',$id)->update($params);
return Redirect::route("clients.index");
}
LaravelなどのフレームワークでRESTfulなルーティングを行っている場合に、ブラウザのフォームではPUT/DELETEを送れないのですが、hiddenフィールドで name=“_method” value=“PUT or DELETE” とすればPUTやDELETEとして扱える。
<form method="POST" action="/foo/bar">
<input type="hidden" name="_method" value="PUT">
</form>
また、laracollectiveのFormファザードだともっと楽に使える。
{!! Form::open(['url' => 'foo/bar','method'=>'put']) !!}
とすればOK
あるプロジェクトで、._hogehoge.html などのファイル? や、.DS_Storeなどがアップされており、それを除外して同期をしたのでメモ。(といってexcludeしているのみです)
$ rsync -avz --exclude "**/.*" USER_NAME@example.com:/var/www/html/ /var/www/html/
こんばんは。遅らばせながら、最近Laravel初めました。
最初はスタンダードな振る舞いを理解したいところですが、業務案件でいろいろ仕様がきまっておりなにがなんでも合わせろやてきな感じな今日このごろ。命名規則なんてく○くらえ的な実装をしています。
そこでいろいろ、カスタムしていくわけで、その方法をメモしておきます。
こちらは、サーバー側でApache完備されて、/var/www/htmlがルートな件で、publicを/var/www/htmlに当てる件。
//まずpublicをhtmlにリネーム
$ mv ./public ./html
//続いてapp/Application.phpを作成し以下の通り publicPath()を上書きする。
<?php
namespace App;
class Application extends IlluminateFoundationApplication {
/**
* Get the path to the public / web directory.
* @return string
*/
public function publicPath()
{
return $this->basePath . DIRECTORY_SEPARATOR .'html';
}
}
システム管理者、社内管理者、外部業者、クライアントetcとそれぞれでURLを変えたいぞー。
ルート設定ファイルで グループを設定すればよし。
//routes/web.php
Route::prefix('admin')->group(function () {
Route::get('/users/login', 'UsersController@login');
}
Route::prefix('manager')->group(function () {
Route::get('/users/login', 'UsersController@login');
}
Route::prefix('suppliyer')->group(function () {
Route::get('/users/login', 'UsersController@login');
}
Route::prefix('client')->group(function () {
Route::get('/users/login', 'UsersController@login');
}
//それぞれ、以下でルーティングできるようになる。
https://example.com/admin/users/login
https://example.com/admin/usmanagerers/login
https://example.com/admin/suppliyer/login
https://example.com/admin/client/login
primaryKey : 主キー、$incrementing : インクリメント(true/false)、$table : テーブル
class Post extends Model
{
public $primaryKey = 'post_id';
public $incrementing = true;
protected $table = 'post';
}
Powered by WordPress & Theme by Anders Norén