73065


**内容**  
現在、既存の作成されたWebアプリのsymfonyバージョンを上げる作業をしております。  
ブラウザでアプリを表示したところ、エラーが出ました。どのように解決すればいいか教えていただきたいです。  
該当の箇所は、下記リンクをもとに、`$request = $this->getRequest()` を消し、preExecute()の中に `Request
$request` を追加しました。

<https://github.com/symfony/symfony/blob/3.0/UPGRADE-3.0.md>

**エラーコード**

[code]

    Catchable Fatal Error: Argument 1 passed to Ahi\Sp\PublicBundle\Controller\BaseController::preExecute() must be an instance of Symfony\Component\HttpFoundation\Request, none given, called in /home/vagrant/Symfony/src/Ahi/Sp/PublicBundle/Listener/PortalListener.php on line 27 and defined
    
[/code]

**該当のコード**

[code]

    <?php
    namespace Ahi\Sp\PublicBundle\Controller;
    
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpKernel\Exception\HttpException;
    
    /**
     * フロントコントローラー。
     */
    abstract class BaseController extends Controller
    {
        const MAX_ITEM_COUNT = 4; //コーディネートからアイテム品番を取得する最大数。 (最大で4個取得できる)
    
        protected $parameters = array();
        protected $response = null;
        protected $cookie   = null;
    
        public function preExecute(Request $request) {
    
            $this->cookie = $this->get('public.ahiCookieService');
            // ---------------------------------------
            // 性別　(順番は会員の性別→ポータルトップの性別ボタン→ブランド→ショップ→MEN'S$LADIE'Sのボタン)
            $this->gender = $this->cookie->get('gender');
    
            //ブランドを取得し、ブランドの性別を上書きする
            $this->brand = null;
            $brandDir = null;
            $brandDirUrlParam = $request->attributes->get('brandDir');
            $brandDirGetParam = $request->query->get('brandDir');
            //以降省略
        }
    
[/code]

[code]

    　　　//preExecuteを呼び出す処理
         /**                                                                                                                                                                                           　　　* コントローラーの前処理。
        　*                                                                                                                                                                                            　　　* @param FilterControllerEvent $event コントローラーイベントフィルタ
         */ 
     public function preControllerExecute(FilterControllerEvent $event)
        {
            if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
                $_controller = $event->getController();
                if (isset($_controller[0])) {
                    $controller = $_controller[0];
                    if (method_exists($controller, 'preExecute')) {
                        $controller->preExecute();
                    }
                }
            }
        }
    
    
[/code]

Requestクラスを定義するコードの全文は以下  
<https://github.com/symfony/http-foundation/blob/3.0/Request.php>

**試したこと**  
修正した内容をもとに戻したところ、下記のエラーが出ました。

[code]

    Attempted to call an undefined method named "getRequest" of class "Ahi\Sp\PublicBundle\Controller\PortalController".
    
[/code]

また、下記サイトをもとに `=null` を追加したところ、下記のエラーが出ました。

[PHPの型宣言(タイプヒンティング) -
Qiita](https://qiita.com/buntafujikawa/items/675dec8f3f357b23da5e)

[code]

    Notice: Trying to get property of non-object
    
[/code]

**バージョン**  
CentOS 6.7  
composer 1.10  
symfony 3.0.9  
PHP 5.6.40


CC BY-SA 4.0
2020-11-05T09:20:43.890
71752
2021-01-04T09:58:34.147
2020-11-06T01:59:27.133
3060
42407
question
php centos symfony
Catchable Fatal Error: Argument 1 passed to　...must be an instance of...none given, called in ...のエラー


下記の内容に修正したところ、エラーが解決しました。

[code]

    public function preControllerExecute(FilterControllerEvent $event)
        {
            if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
                $request = $event->getRequest();
                $_controller = $event->getController();
    
            if (isset($_controller[0])) {
                $controller = $_controller[0];
                    if (method_exists($controller, 'preExecute')) {
                        $controller->preExecute($request);
                    }
            }
            }
        }
    
[/code]


CC BY-SA 4.0
2021-01-04T09:58:34.147
73065
2021-01-04T09:58:34.147
42407
71752
answer