前提・実現したいこと
既存のシステムのsymfony、phpのバージョンアップ作業をしておりまして、
エラーが発生しました。
恐らく、getRequest()
メソッドの廃止でRequest $request
の追加などを行った影響によりエラーが出ております。
型が違うだけであれば対応はできるのですが、none givenとそもそも値を得られていない場合の、エラーの原因を調査する方法を教えていただきたいです。
初歩的な質問で恐縮ですが、よろしくお願いいたします。
発生している問題・エラーメッセージ
Catchable Fatal Error: Argument 1 passed to Ahi\Sp\PublicBundle\Controller\BaseController::getSidebarParams() must be an instance of Symfony\Component\HttpFoundation\Request, none given, called in /home/vagrant/Symfony2/src/Ahi/Sp/PublicBundle/Controller/PortalController.php on line 102 and defined
該当のソースコード
PHP
1//BaseController.php 2 abstract class BaseController extends Controller 3{ 4 /** 5 * サイドバーのデータを取得 6 * 7 * @param Brand $brand ブランドエンティティ 8 * @param Shop $shop ショップエンティティ 9 * 10 * @return $SidebarParams サイドバーに使うパラメータを返す 11 */ 12 public function getSidebarParams(Request $request) 13 { 14 $brand = null; 15 $shop = null; 16 $SidebarParams = null; 17 $coordinateService = $this->get('public.coordinateService'); 18 if (!$brand && !$shop) { //ポータルの画面で使用するサイドバー 19 //全てのブランドを取得する 20 $brands = $this->get("public.brandService")->getAllBrand(); 21 $SidebarParams['brands'] = $brands; 22 23 //コーディネートランキングを5件取得する 24 $rankingCoordinates = $coordinateService->getRanking($brand, $shop, 5, 0, $this->paramsSex); 25 $SidebarParams['rankingCoordinates'] = $rankingCoordinates; 26 27 // キャンペーン(SPと共通化しました) 28 $SidebarParams['campaign'] = $this->service('ecEvent')->getEvents($this->gender,5); 29 30 } elseif (!$shop) { //ブランド内の画面で使用するサイドバー 31 $SidebarParams['brand'] = $brand; 32 33 //ブランド内のショップを取得しエリア毎に分ける 34 $shopService = $this->get('public.shopService'); 35 $areaShops = $shopService->getAreaShops($brand, $this->gender); 36 $SidebarParams['areaShops'] = $areaShops; 37 38 //ブランド内コーディネートランキングを5件取得 39 $rankingCoordinates = $coordinateService->getRanking($brand, $shop,5, 0, $this->paramsSex ); 40 $SidebarParams['rankingCoordinates'] = $rankingCoordinates; 41 42 //ブランド内新着コーディネートを5件取得 43 $newCoordinates = $this->get('public.coordinateService')->getArticles($brand, null, 5, 0, $this->paramsSex); 44 $SidebarParams['newCoordinates'] = $newCoordinates; 45 46 // キャンペーン(SPと共通化しました) 47 $SidebarParams['campaign'] = $this->service('ecEvent')->getEvents($brand,5); 48 49 } else { //ショップ内の画面で使用するサイドバー 50 //ショップ情報を取得するためショップエンティティを取得 51 $SidebarParams['shop'] = $shop; 52 53 $areaShops = $this->get('public.shopService')->getAreaShops($shop->getBrand(), $t 54his->gender); 55 $SidebarParams['areaShops'] = $areaShops; 56 57 //ショップ内コーディネートランキングを5件取得 58 $rankingCoordinates = $coordinateService->getRanking($shop->getBrand(), $shop, 5, 59 0, $this->paramsSex); 60 $SidebarParams['rankingCoordinates'] = $rankingCoordinates; 61 62 //ショップ内新着コーディネートを5件取得 63 $newCoordinates = $coordinateService->getArticles($shop->getBrand(), $shop,5, 0, $this->paramsSex); 64 $SidebarParams['newCoordinates'] = $newCoordinates; 65 66 //ショップTOPと同じキャンペーンを3件取得 67 $SidebarParams['campaign'] = array(); 68 69 //ブログの個別ブランド内で最新ブランドキャンペーンを3件取得 70 // $brandEvents = $this->get('public.brandEventService')->getBrandSingleEventArticles($shop->getBrand(),'campaign', 3, 0, $this->paramsSex); 71 72 // //ブランドECキャンペーンを取得 73 // $ecEvents = $this->get('public.ecEventService')->getBrandEcEvents($shop->getBr 74and(),3, $this->gender); 75 76 // //ショップ固有のキャンペーン3個 77 // $shopEvents = $this->get('public.shopEventService')->getShopSingleEventArticles($shop,'campaign', 3, 0, $this->paramsSex); 78 79 //ブランド、EC、ショップのイベントを3個取得 80 // $SidebarParams['campaign'] = $this->getArrangeAllEvents($brandEvents, $ecEvents, $shopEvents); 81 82 // //3件に絞る 83 // $SidebarParams['campaign'] = array_slice($SidebarParams['campaign'], 0, 3); 84 // //ブランドECキャンペーンを取得 85 // $ecEvents = $this->get('public.ecEventService')->getBrandEcEvents($shop->getBrand(),3, $this->gender); 86 87 // //ショップ固有のキャンペーン3個 88 // $shopEvents = $this->get('public.shopEventService')->getShopSingleEventArticles($shop,'campaign', 3, 0, $this->paramsSex); 89 90 //ブランド、EC、ショップのイベントを3個取得 91 // $SidebarParams['campaign'] = $this->getArrangeAllEvents($brandEvents, $ecEvents, $shopEvents); 92 93 // //3件に絞る 94 // $SidebarParams['campaign'] = array_slice($SidebarParams['campaign'], 0, 3); 95 // キャンペーン(SPと共通化しました) 96 $SidebarParams['campaign'] = $this->service('ecEvent')->getEvents($shop,5); 97 98 //お気に入り店舗登録しているかチェック 99 $session = $request->getSession(); 100 $favoriteShops = $session->get('favoriteShops'); 101 $SidebarParams['isFavoriteShop'] = false; 102 103 if ($favoriteShops) { 104 foreach ($favoriteShops as $favoriteShop) { 105 if ($favoriteShop['shopDir'] == $shop->getDirName()) { 106 $SidebarParams['isFavoriteShop'] = true; 107 break; 108 } 109 } 110 } 111 } 112 return $SidebarParams; 113 } 114
PHP
1//PortalController.php 2 //サイドバーのデータ取得 3 $sideBar = $this->getSidebarParams(); //line102 4
補足情報(FW/ツールのバージョンなど)
PHP 5.6
Symfony 3.0.9
Cent OS 6.7
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。