【代入、返り値編】python での特殊な書き方。@phper の驚き!
ほおーーー!!!!! って驚くこと書いてみた。
複数の値へ同時に代入。
初期化用かな。
>>> hoge ,fuga = (10, 100) >>> hoge 10 >>> fuga 100
複数の返り値!!!
def multiReturn(): return 10, 100, 1000 >>> a, b, c = multiReturn() >>> a 10 >>> b 100 >>> c 1000
TestCaseの使い方。 @django
faviconがsessionにいるせいで半日潰れた
■現象
hoge.com/[controller]/[action]/[parameter]
でGETパラメーターでアクセス。 入力フォームで登録情報を入力してもらうページ。
何も入力せずEnter。
リダイレクト先が
hoge.com/[controller]/[action]/favicon.ico
になってた。
■追求
validationを掛けているので、FormRequestを継承したrequestのphpファイルを
php artisan make:request CompanyRequest
みたいに作るのよ。
ははーん、validateが失敗したときのリダイレクト先が変なんだな??
これを機会にちょっとソースをほじくるぞ。
まず、
vender/laravel/framework/src/illuminate/Foundation/Http/FormRequest.php
が元だね。こんなに階層潜るのか。
protected function failedValidation(Validator $validator) { throw (new ValidationException($validator)) ->errorBag($this->errorBag) ->redirectTo($this->getRedirectUrl()); }
はいはい、 getRedirectUrl()
ね。。
protected function getRedirectUrl() { $url = $this->redirector->getUrlGenerator(); if ($this->redirect) { return $url->to($this->redirect); } elseif ($this->redirectRoute) { return $url->route($this->redirectRoute); } elseif ($this->redirectAction) { return $url->action($this->redirectAction); } return $url->previous(); }
...redirector ?????
vender/laravel/framework/src/illuminate/Routing/UrlGenerator.php
にいるね、うんうん。このクラスだね。
getPreviousUrlFromSession
ここらへんから怪しいよね、session???って。 都度都度dd()で吐き出してるけど、結局パラメータがfavicon.icoになってる。
■解決?
なんでfaviconがSessionにいるんだよおあああああああああああああああああああああああああああああ
まさか、まさか、と思い、htmlのheadタグ内からfavicon.icoを消したら 正しいURLになってた…
はあ?!って叫びました。
もう嫌!ってなりかけてたけど、ここで諦めたら駄目だと無駄なプライドが意地張ってました。
■解決!
…。
<link rel="shortcut icon" href="favicon.ico">
…。…これが悪い…?…パス…?でもブラウザには表示されてるし…、firefoxだと平気だし、問題はchoromeちゃんだけだし…
<link rel="shortcut icon" href="/favicon.ico">
…ああああああああああああ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!できた!!!!!!!!!!
■根本解決? には至らず。
調べたところ、Chromeだけの現象のようです。
faviconのパスをちゃんと「頭から」指定してあげないと、sessionに上書きされて、laravelやcakePHPのsessionにある _previous
というリダイレクト先が上書きされてしまう様子。
また、favicon.icoのみならず、ドキュメントルート以下の画像、css、jsファイルも同様の現象が起きている模様です。
はあ…疲れた。寝ます。
いい機会でした。
見てくれた皆さんは、くれぐれもパスには注意しましょう。
P.S. 仲間がいました。
Laravel バリデーションが変な場所へリダイレクトしてしまう – console dot log
ほーらやっぱり!!!!!!!!!
外部キーが貼られているテーブルをtruncate
こんばんは。 新年早々酒を飲みながら開発してます。
いやはや、一からきっちり設計しつつ開発しつつ‥はぶつかる壁も多いです。
さて、laravelのmigrationにて外部キーも貼りつつ、seederも作っていると、 migrationの度に外部キーの貼ったテーブルをリセットしてやりたいなあと思いますよね。
でもそれできないんですよね、mysqlの設定を弄らいない限り。
外部キー貼ったテーブルはtruncateできんのじゃ!って怒られます。
調べても、やはりmysqlへの命令を投げて上げる必要があるらしい。
参考にしたURLは以下です。
私のブログは一向に調べたリンクしか貼らない。クソブログです(鬱)
外部キーの張り方 @laravel , mysql
こんばんは。 今年も今日で最後です。
さて、 laravelのmigrationで外部キーを貼る時は
$table->foreign('pref_id')->references('id')->on('prefs');
とするのですが…
SQLSTATE[HY000]: General error: 1005 Can't create table 'dbname.tablename' (errno: 150) (SQL: alter table `*****` add constraint `*****_foreign` foreign key (`pref_id`) references `prefs` (`id`))
とエラーがでたのですね。 なんでやと。
結局のところ、考えれば分かるのですが、 参照元と参照先のデータの「桁数」の違いでした。
ただ、laravelのmigrationでは、integerの桁数を意図的に設定できないんですよね。 設定方法を知らなかっただけなのですが。
教えてくだちい。
ちなみに今日参考にしたサイトは以下です。ありがとうございました。 皆様良いお年を。