PHPでいろいろな種類の改行コードを簡単に配列に格納する。のは“R” がよさそう。
参考
http://php.net/manual/ja/regexp.reference.escape.php
そのままですが。
$lines = preg_split('/R/',$text);
$textはテキストエリアなどに入力された文字を想定。
win/macどちらからでも
参考
http://php.net/manual/ja/regexp.reference.escape.php
そのままですが。
$lines = preg_split('/R/',$text);
$textはテキストエリアなどに入力された文字を想定。
win/macどちらからでも
ふつうのコントローラーだと。アクションで return して上げればリダイレクトできる。
function restore($request){
・
・
return Redirect::route("item.index")->with('message', '登録しました。');
}
ただ、親のコントローラーや別のメソッドからだとできない場合は以下の様にする。
function hoge(){
Redirect::route('item.index')->withErrors(['redirect'=>'エラー発生'])->throwResponse();
}
Redirect(ファザード)の実態は。IlluminateRoutingRedirector で、
route()->withErrors()を実行した戻り値は。IlluminateHttpRedirectResponse
その RedirectResponseクラスのthrowResponse();を実行している流れ。
こちらを使わせてもらいました。
kyslik/column-sortable
https://github.com/Kyslik/column-sortable
まずはcomposerでインストール。
$ composer require kyslik/column-sortable
config/app.phpの providersに追加
'providers' => [
/*
* Laravel Framework Service Providers...
*/
IlluminateAuthAuthServiceProvider::class,
IlluminateBroadcastingBroadcastServiceProvider::class,
IlluminateBusBusServiceProvider::class,
・
・
・
・
/*
* paginate sortable ※こちら
*/
KyslikColumnSortableColumnSortableServiceProvider::class,
],
モデルに追記。
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
use SymfonyComponentHttpFoundationRequest;
use KyslikColumnSortableSortable; //※ここと。
class User extends Model
{
use Sortable; // ※ココ
ビューは以下の様に
<th>@sortablelink('email','メールアドレス')</th>
Goodby, CSV
https://github.com/goodby/csv#requirements
composer.json のrequireに“goodby/csv”を追加。
"require": {
"goodby/csv": "*"
}
して、composerをアップデート
$ composer update
$ composer dump-autoload
モデル、ライブラリをuseして使う。
app/ItemCsv.php
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
use GoodbyCSVImportStandardLexer;
use GoodbyCSVImportStandardInterpreter;
use GoodbyCSVImportStandardLexerConfig;
class ItemCsv extends Model
{
protected $table = 'items';
public static function import($path){
$config = new LexerConfig();
$config->setToCharset("UTF-8");
$config->setFromCharset("sjis-win");
$interpreter = new Interpreter();
$tmp = array();
$interpreter->addObserver(function(array $row) use (&$tmp) {
$tmp[] = $row;
});
$lexer = new Lexer($config);
$lexer->parse($path, $interpreter);
dd($tmp);
}
}
あとは、何処かしらから。
ItemCsv::import($path_to_csv_file);
解決した方法。
//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");
}
Powered by WordPress & Theme by Anders Norén