【PHP】フレームワーク CakePHP 19ホール目【v3.3】 [無断転載禁止]©2ch.net
せめてちょっと直せば動く程度だったら良かったんだけどなあ cakephp3で質問です。
UrlHelperのbuildで、与えられた配列パラメータからurl文字列に変換できますが、
逆にurl文字列から配列パラメータに変換することはできますか? >>254
そう言われるとますます貼りたくなる
言われなくても貼るけど >>254
CakePHPのスレだぞ?
バカなの? >>252
例えばURLが
https://www.sample.com/app_name/plugin/controller/action/param1/param2?query=AAA
なんて場合、parse_urlを使うと、pathとして
/app_name/plugin/controller/action/param1/param2
が返ってきます。このpathの部分をさらに細かく取得したいのです(特にparam1、param2の部分を取得したい)。
pathをスラッシュで分割して、アプリのディレクトリ部分とplugin〜action部分を除けばいいといえばその通りなのですが、
なるべく簡単に済ませたいなあと。 FormHelperでチェックボックスを作ると配列になる
それをPOSTしたら、entityではチェックボックスの配列は空になる
なんでよ? >>261
2からの移行?新規?
bakeされるソースとの違いは? WEB系くわしい人に質問です。
アメリカの海外サーバで、1処理内ででメール送信プログラムをPHPで書きました。
Aにメール送信
↓
Bにメール送信
この時A宛のメールはすぐに届くのですが、
Bに送ったメールは毎度5〜10分経ってから届きます。
これって一体何が原因として考えられますか? >>261
まだ見てるかな?
debug($this->request->daea);
をController内に書いてから、チェック入れてPOSTして確認した?
チェックボックスではチェックが入ってなかったら無かったことに
されることもあるよ >>273
あああ、typoしてる
debug($this->request->data);
です おめーらには無理無理っすー
俺とちがってYou達ばかっしょ??? 3では、modelでVirtual fieldにSQL文が使えなくなったのが痛いねえ Cake2.xです
アソシエーションについて質問です
テーブルAに対してテーブルBがhasManyの関係で複数連結されている状態なんですが、
その時Bがヌルでない行のみ取得したいのですが
どのような条件で取得すればいいでしょうか?
Cake始めたばかりなので初歩的な質問で申し訳ありませんがどなたか教えてください >>277
cakephp2 inner join でググれ
あと、sqlかER図か、どっちかは知っとけ
少しは捗るから >>277
left join right join 共通クラスの追加方法について教えて下さい
普通の共通クラスはController/Componentsに追加すれば良さそうですが
こちらではComponentクラスを継承しなくてはいけないようなので
ちょっと都合が悪いです。
自由に別クラスが継承できて共通クラスを追加する方法を教えて下さい
バージョンはcake2です >>281
Compornentクラス継承が都合悪いなら、プラグインの自作だな
俺は解説出来ないけど、「cakephp2 プラグイン 作り方」で検索したら
日本語、かつソースコード付きのわかりやすい解説が山ほど出てくるから
適当に読んでコツコツ作ってみると良い いちいち貼るなよウザイ
その情報が必要な人は、ここ見なくても知るから大丈夫だよ >>284
いつもご苦労様です。すごく役に立ってます。これからもよろしくお願いします。 >>273
さらに今更だけど、modelが配列からオブジェクトになったから、formで
postされたmultipleなchekboxの中身がそのままmodelに渡すと空になる
ということでは? >>290
あー、確かに
今みたら、俺のコードだと配列に落としてむりくり表示してるわ
そーゆうやっつけ仕事はほめられたもんじゃないな
もっと便利の良い方法があるかもしれんね
ちとドキュメント読み直してみるか... あ、表示は[戻る]リンクの時ね
Modelにも配列でむりくり渡してるから同じ
事だけど 以下のような内容のデータをfind関数で取得したいんですが
どのように書けばいいですか?(直接SQLを実行する方式ではなく
クエリビルダで取る方法を教えてください)
select * from (
select * from TableA
)
※クエリ自体は無駄な部分を排除してシンプルにしているのでこのようになっております
実際に使用するときはこちらの形を応用して使用する予定です cake2で、PHP7.1.12の環境でI18n絡みのエラーが出る人います?
サーバ起動後、初回のアクセスでのみ発生するというわけのわからない状況、
うちだけでしょうか? もしも発生したら、opcache無効にしてみてください。 https://mallento.com
こういうの作るのにどんくらい時間かかるんや >>293
サブクエリー内外で カラムが「*」の上、WHEREもJOINも無い
エスパー推測で以下のよーなSQLを使いたい、と勝手に解釈する
SELECT col1,col2 FROM
(SELECT col1,col2,col3 FROM TableA WHERE col1=5);
これと似た構造をCakePHP3のクエリビルダで書けるには書けるが、
「遅延実行」という仕組みがある為、生成されるSQLは大体こうなる
SELECT col1,col2 FROM TableA WHERE col1=5;
あと、MySQLとMariaDBでは1回のSQLで使えるインデックスは1つだから
サブクエリーを多用すると遅くなる
メンテナンス性が高まる、とかいうメリットを考えてるかもしれんが、
速度を改善したくなったり、見やすいコードを書きたくなったりする時期が来た頃には手遅れやぞ? >>299
クエリが変わってるんですけど・・・
あとたったこれだけのサブクエリでレスポンスが遅くなるとは思えないんですけど・・・ >>302
「遅延実行の仕組みで」って書いてあるのは無視か?
SQLが短いのは、クエリビルダ使用前と使用後の違いを目立たせるため
実務なら普通に1行で書く
$hoge=$this->TableAs->find()->select(['col1','col2'])->where(['col1'=>5]);
(TableAがTableAs になってる、とか言い出すアホはいないと信じたい)
で、2重構造にするなら思いつくだけでも3つ以上ある
1 VIEW を使う
2 Modelにサブクエリ風のfunction書く
3 ModelにbyHoge(Query,$options=[])を用意してControllerからfindbyhogeで呼ぶ
4 Cpntroller内でクエリビルダを2回使う
TableAが定義されてないのに、これ全部例示する気にはならんわ ちんぺい @chinpei215
先日の RequestHandler に起因する脆弱性の公式アナウンスがありました。また非公式ですが私の方で翻訳を行っています。
https://mbstring.com/news/potential-information-disclosure-in-application-skeleton/
14:06 - 2017年12月10日 35で指摘した本人だけど、AppControllerのbeforeRenderから
$this->set('_serialize', true);
を削除する対応よりは、
_serialize変数が宣言されていなければ
$this->set('_serialize', []);
を設定するという対応のほうが良いと思うんだが。
RequestHandlerはviewの切り替え以外でも使われるわけで、RequestHandlerを
使うなという対応よりは、使われる前提での対応のほうが適切かと思う。
というか$this->set('_serialize', true)はクソ仕様。
public function beforeRender(Event $event)
{
$return = parent::beforeRender($event);
if (!array_key_exists('_serialize', $this->viewVars) &&
in_array($this->response->type(), ['application/json', 'application/xml'])
) {
$this->set('_serialize', []);
}
return $return;
} >>304
ありがとうございます
4番ってどうやるのか教えていただけると助かります バージョン1.3です
ページネーションのメタタグ作りたいんだけど、
ページネーションヘルパーから次のページのURLを絶対パスで引数付きで取得する方法ってありませんか?
コントローラーでベタ書きして渡せば出来ないことはないんだけど、スマートな書き方ってありませんか? >>308
よりによってそれかよ
まあ、需要があるなら書くが・・・
1つめのクエリー
$hoge=$this->TableAs->find()->select(['col1','col2','col3'])->where(['col1'=>5]);
2つめのクエリー
$fuge=$hoge->select(['col1','col2']);
controller内でデータとして使うときは、
全件取得:$koge=$fuge->all();
最初の一件だけ取得:$koge=$fuge->first();
で実体化する
あとは、debug($koge);
で中身を表示・確認しながら好きなように使う
それと、 debug($fuge);でどんなクエリーが出来るてるかみたほうが良い 何だかんだでアドベントカレンダー全部埋まってるよね テーブルAとテーブルBは互いにhoge_idというカラムを持っていて
hasManyで紐付けたいんですが
hoge_idはどちらのテーブルでも主キーではありません
この場合アソシエーションではどのようにくっつければいいのでしょうか? 誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。
グーグル検索⇒『半藤のブブイウイウレレ』
AJ01PNMU9X 2系を使用しています。コントローラー内でのビューの取得について相談です。
コントローラーで
function test() {
$this->render('test');
$body = $this->response->body();
}
とすれば取得できるのですが、
取得した文字列の一部を加工して出力しようと、
echo str_replace('タイトル', 'TITLE', $body);
しても二重に出力されてしまいます。
加工後のデータだけ出力するにはどうすれば良いのでしょうか? renderはデフォルトで出力もする
$this->autoRenderあたりでオフれるはず すみません
サーバーに全ファイルをffftpでアップするとき
vendorファイルの中が多すぎて止まってしまうんですが
どうすれば良いでしょうか? いまどきFTPなんて欠陥プロトコルとそのクライアント使うなってことです まあそれしか使わせて貰えないサーバーもあるだろよ
無料レンサバとかさ >>324
Oven使ってインストールするってのはどう?
cookbookにも掲載されている方法です >>327
telnetすら使えない場合解凍のスクリプトがいるけどな
そのライブラリもなければお手上げ .poファイルを作って、/app/Local/eng/LC_MESSAGES
に配置すれば多言語化(翻訳)が可能になります。
その理解が最低限あるとして相談です。
フォームヘルパーで選択肢を作るとき
$this->Form->input('hobby', array('options' => array('cooking', 'sports')));
な感じで書くと思います。
この選択肢(option)の部分をpoファイルに記述しても翻訳されません。
別に配列を用意して切り替えるしか無いのでしょうか? >>333
$this->Form->input('hobby', array('options' => array(__('cooking'), __('sports'))));
は試したか? >>334
返事が遅くなってすみません。
それは試したのですが、配列すべてに__()を付けるのもどうかと思いまして・・・。
そういう方法しかないと言うなら納得します。もし他に方法があれば教えてください。 >>336
foreachでムリクリ「__()」くっつける方法とか、
対訳テーブルをdb上に作っといて「__d('cooking','料理') , __d('sports','スポーツ')」って出力するとか
いまいちパッとしない
後者についてはdb使うから、foreachだけより遅くなるかも
とりあえず前者だけ書いとく
ふつうはTemplateに直書きせずに
Controller側
$ops=array();
$ops[]='cooking';
$ops[]='sports';
$this->set('ops',$ops);
Template側
echo $this->Form->input('hobby',$opt);
とかやるでしょ? そのときにこーゆー無茶をやる >>336
無茶の続き
Controller側
$ops=array();
$ops[]='cooking';
$ops[]='sports'; //ここまで上と同じ
$op1=array(); //新しい配列
foreach($ops as $key=>$op){ //$key に添え字、$opに内容が入る
$op1[$key]='__('.$op.')'; //文字列連結
}
$this->set('ops',$op1);
Template側(上と同じ)
echo $this->Form->input('hobby',$opt);
foreachは、配列が大きいと実行時負荷が半端じゃ無いけど、10ヶ前後ならナシでもないはず。 >>336
文字列連結はこうかもしれん
$op1[$key]='__('.'''..$op..'''.')';
シングルクオーテーションの扱いも面倒だな
もっとスマートなやり方が考案できたら良いんだが、俺にはこれが精一杯
あとはqiita辺りをROMるほうがが吉かと >>339
あああ、また間違えた、書くならこっちだ
$op1[$key]='__('.'''.$op.'''.')'; $keyじゃないな。たぶんこれでいけると思う
Controller側
$ops=array();
//ここからoption内容作成
$ops[]='cooking';
$ops[]='sports';
//ここまでoption内容作成
$op1=array(); //新しい配列
foreach($ops as $op){
$op1[$op]='__('.'''.$op.'''.')'; //文字列連結
}
$this->set('ops',$op1);
Template側
echo $this->Form->input('hobby',$opt);
$optの内容:['cooking'=>__('cooking'),'sports'=>__('sports')] やりすぎ防犯パトロール、特定人物を尾行監視 2009年3月19日19時7分配信 ツカサネット新聞
http://headlines.yahoo.co.jp/hl?a=20090319-00000026-tsuka-soci
この記事で問題になった通称やりすぎ防パトは、創価学会と警察署が引き起こしていたようです
掻い摘んで説明すると
・創価学会は、町内会や老人会、PTA、商店会等の住民組織に関し、学会員が役員になるよう積極的に働きかける運動を
90年代末から開始し、結果、多くの住民組織で役員が学会員という状況が生まれた
・防犯パトロールの担い手は地域の住民と住民組織で、防犯活動に関する会議や協議会には、住民組織の代表に役員が出席する為
防犯活動や防パトに、創価学会が間接的に影響力を行使可能となった
・防パトは住民が行う為、住民が不審者や要注意人物にでっち上げられるトラブルが起きていたが
創価学会はその緩さに目をつけ、住民組織を握っている状況を利用し、嫌がらせ対象者を不審者や要注意人物にでっち上げ
防パトに尾行や監視、付き纏いをさせるようになった
・防パトは地元警察署との緊密な連携により行われる為、創価学会は警察署幹部を懐柔して取り込んでしまい
不審者にでっち上げた住民への嫌がらせに署幹部を経由して警察署を加担させるようになった
・主に当該警察署勤務と考えられる創価学会員警察官を動かし、恐らく非番の日に、職権自体ないにもかかわらず
私服警官を偽装させて管轄内を歩いて回らせ、防犯協力をお願いしますと住民に協力を求めて回り
防犯とは名ばかりの、単なる嫌がらせを住民らに行わせた(防犯協力と称し依頼して回っていた警察官らの正体は恐らく所轄勤務の学会員警察官)
※これに加えて防犯要員が同様のお願いをして回る
・こうして防犯パトロールを悪用し、住民を欺いて嫌がらせをさせつつ、創価学会自体も会員らを動員し、組織的な嫌がらせを連動して行った
つまり警察署に勤務する学会員警察官、警察署幹部、創価学会が通称やりすぎ防犯パトロールの黒幕
詳細は下記スレをご覧下さい
やりすぎ防犯パトロールは創価学会と警察署の仕業だった
https://rio2016.5ch.net/test/read.cgi/bouhan/1516500769/ Cake2.10からPHPUnitの5が使えるようになったって話だけど
まともに動かないまま放置されてる
2系ももう終わりなんですかね >>344
バグフィックスしてくれるだけで十分だわ。当分使えるし ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆