CakePHP3でファイルをアップロードする処理を作成しました。「CakePHP3でファイルのアップロード処理を自作・解説付き・その1」で解説した処理では、アップロードはできても、レコードやファイルを更新する処理や、削除をする処理に対応していませんでしたので、実用に耐えうるようにするために、追加で必要な処理を作成しました。今回は、その追加の処理の解説です。入力された情報を更新する入力画面「edit.ctp」を更新します。更新する対象のファイルは、以下になります。/src/Template/News/edit.ctp追加するソースコードは下記になります。$this->Form->input('file',["type"=>"file"]);追加すると下記ようなイメージになります。CSSなどの調整をしてください。Newsの記事を更新しようとすると、すでに登録されている画像が表示されます。(登録した画像がない場合は表示されません。)そして、画像を更新したい場合は、そのまま新たな画像ファイルを指定して、「submit」を実行します。画像を削除するだけの場合は「Delete」ボタンをクリックすることで画像の削除だけが行われる、という処理を想定しています。実際の更新処理も実行しますので、そのほかの項目を更新している場合は、更新があった項目の更新も実行します。hiddenの値として保持して処理を続けています。Helperの使い方のまとめ」に記事を書いていますので、そちらも参考にしてください。editアクションの変更部分です。更新する対象のファイルは、以下になります。/src/Controller/NewsController.php更新するソースコードは下記になります。$this->log("ファイル更新時に下記ファイルが削除できませんでした。{$this->log("ファイル更新時に下記ファイルが削除できませんでした。変更点にはそれぞれコメントを入れていますので、個別に確認していただければわかりかとは思いますが、解説をしていきます。9行目は、アップロードするファイルを保存するフォルダを指定します。各フォルダのパスの指定の仕方は、「CakePHP3でDocumentRootやtmp、webroot、logsなどのフォルダへのパスの定数」に記事を書いていますので、そちらを参考にしてください。11行目は、「delete」ボタンがクリックされたか、否かの判定です。name、valueを指定することができ、クリックされたボタンがどのボタンなのかを判定することができます。その処理を利用して、「delete」ボタンがクリックされた場合と、通常の「submit」ボタンがクリックされた場合とで処理を分けています。13行目で、Fileクラスで削除処理対象のファイルを指定して、15行目で削除の実行を行います。削除実行が正常に処理できたか、否かによって振り分け処理を行っています。Fileクラス、Folderクラスに関しては、下記のページを参考にしてください。https://book.cakephp.org/3.0/ja/core-libraries/file-folder.html26行目からの処理は、ファイルをアップロードする処理です。29行目の「file_upload()」関数は、「CakePHP3でファイルのアップロード処理を自作・解説付き・その1」で解説した、自作のファイルアップロード処理ですのでそちらの解説を参照してください。「file_upload()」関数の中身は特に変わりません。31行目は、新しいファイルが送信されてきた場合、既存登録のファイルがあった場合は、それを削除する必要がありますので、その削除処理を実行しています。ここでは、削除処理を実行しても削除できなかった場合は、処理を中断させるのではなく、ログファイルにログを出力するだけで、処理を継続する仕様にしています。処理を中断させる必要がある場合は改修をしてください。52行目は、新しいファイルが送信されなかった場合で、既存登録のファイルがある場合は、既存登録のファイルを削除せずに保存しなおすための処理になります。61行目からの処理は、ファイルを削除する「delete」ボタンがクリックされた場合は、更新の入力画面に戻るためのリダイレクト処理を設定しています。addアクションは「CakePHP3でファイルのアップロード処理を自作・解説付き・その1」で解説した変更箇所から変更する箇所はありません。addアクションも記載しておきます。deleteアクションの変更部分です。更新するソースコードは下記になります。'index']);}ファイルが削除できない場合は、デバッグログに出力する処理だけにしています。発生しないと思っていることと、ファイルが消せなくてもレコードが消せれば良しとしよう、と判断しているためです。厳密な処理を行うために処理を止めたい場合は、厳密なエラー処理を記述してください。CakePHP3で画像・ファイルのアップロードする処理のまとめCakePHP3で画像やファイルのアップロードを行う処理を自作してみました。CakePHP3が、Post送信されたファイルも扱いやすい形で処理してくれますので、その後のファイルのコントロールのスムーズに処理をすることができます。サムネイルファイルを作成する機能などはありませんので、大きなファイルをアップロードすることを想定する場合などは、さらに追加の機能なども必要であろうと思いますが、ファイルのアップロードの処理について理解を深めるには、プラグインを使わずに一度自分で作ってみるのもいいんじゃないかと思います。作成する上での関連記事は以下の通りとなります。Ajaxを使う方法の解説。Successとthenの両方を解説。CakePHP3GoogleAdwordsGoogleAdwords最後までお読みいただきましてありがとうございます。コメントをキャンセルメールアドレスが公開されることはありません。*サイト下記の空欄を埋めてください。date*日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)※入力いただいたコメントは管理者の承認後に掲載されます。関連記事CakePHP3の検索プラグイン「friendsofcake/search」の設置方法・CakePHP3.6対応CakePHP3で検索を担うプラグイン「friendsofcake/search」の紹介。基本的な設置方法の紹介のほか、処理の記述方法のバリエーション、エラーの解説など。CakeDC/searchより導入は簡単!CakePHP3でPHPExcelを使ってエクセルファイルを生成、出力する方法CakePHP3でPHPExcelを利用してエクセルを編集、出力するサンプルソース+解説。PHPExcelのインストール方法の解説からファイル保存とダウンロードの方法なども解説。CakeDC/Usersプラグインなどを利用したユーザ管理・認証システムにおいて、ログインしていなくても見ることができるページの設定方法を解説。CakePHP3のCakeDC/Usersでログインユーザの所有レコードのみ更新、削除する権限管理の設定方法CakePHP3のユーザ管理、ログイン認証プラグイン「CakeDC/Users」の権限管理を行う方法やアクセスできるコントローラー、アクションを設定、所有権を持つレコードのみ更新できる設定方法を解説。CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定CakePHP3でOGPを設定する方法を解説。metaタグを編集するHTMLヘルパーを利用してOGPのタグを編集する。エレメントとして分割することでメンテナンス性も向上させる。CakePHP3でページごとに読み込むJavaScript、CSSを変える処理の解説CakePHP3でJavaScriptやCSSを編集する基本形から、それらやテンプレート(エレメント)を特定のテンプレートを読み込んだときのみ編集、実行するための方法、ブロック化について解説。CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズCakeDC謹製Usersプラグインの紹介。UserHelperを利用し、ログアウトのリンクや権限があるときのみ表示されるリンク、プロフィールページへのリンク、reCAPTCHAの設置方法などを解説。CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」CakePHPでQRコードを生成するライブラリ「cakePHP-QR-Code-Helper」の紹介。GDライブラリのインストールも必要ないHelperとして提供されているため、ファイルを設置すればすぐに使用可能。Saveを詳細解説します。CakePHP3のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説CakeDC謹製Usersプラグインの紹介。ユーザ新規登録の流れを紹介しつつテンプレートファイルがどこにあるか、設定情報ファイルがどこにあるか、を説明しつつカスタマイズの方法を解説します。小学校でプログラミングの授業が始まる。プログラムを組むことを覚えることが本質ではなく理論的な手順の組み立てのトレーニングをする授業という理解が必要だと思う。Parserを使ってスクレイピングをする方法を解説。インストール方法、読み込み方法。具体的なスクレイピングを実行するサンプルソースも。Parser」の使い方を解説。要素を取得する方法、そこから属性を取得する方法を解説。マニュアルにはない注意点なども解説。2020.01.27PHPでスクレイピング。スクレイピング」で検索すると「phpQuery」ばかりヒットするが、10年以上も放置されている。Parser」をオススメする。2020.01.26PHPのcURLでAPIやWebサイトへのアクセス方法。file_get_contentsとの比較PHPからWebサイトにアクセスしてHTMLを取得、APIにアクセスして情報を取得する場合は、cURLがオススメ。file_get_contentsでも可能だがエラー制御に難がありトラブルのもとになる。add_shortcode関数を使ったショートコードという機能を利用します。不正なコピーコンテンツからの直リンクを拒否する.htaccessの設定方法。拒否するサイトを指定、許可するサイトを指定する方法、単純な拒否と画像の差し替えを解説。口コミサイトを作るために必要な評価点、レビューを投稿できるプラグインを探して評価。10プラグインをチェックし、8プラグインは詳細解説付き。2014.07.17BackWPupでバックアップ・リストア(復元)の具体的手順BackWPupその9。バックアップファイルからのリストア(復元)の手順です。109キーボード)は日本人サイズのキーボード。ショートカットも押しやすく女性や子供にも優しいサイズ。Web開発・運用に役立つ記事を中心に紹介しています。