Yii2: Error page on call undefined method

Created on 8 Jun 2017  路  5Comments  路  Source: yiisoft/yii2

What steps will reproduce the problem?

call undefined method ($model->getBar() where mwthod getBar is not defined)

What is the expected result?

beauty Yii error page with stack trace

What do you get instead?

page with content

An Error occurred while handling another error:
exception 'ReflectionException' with message 'Method frontend\models\CatalogItemsSearch::getCatalogItems() does not exist' in %project_path%\vendor\yiisoft\yii2\web\ErrorHandler.php:195
Stack trace:
#0 %project_path%\vendor\yiisoft\yii2\web\ErrorHandler.php(195): ReflectionMethod->__construct('frontend\\models...', 'getCatalogItems')
#1 %project_path%\vendor\yiisoft\yii2\views\errorHandler\callStackItem.php(26): yii\web\ErrorHandler->addTypeLinks('frontend\\models...')
#2 %project_path%\vendor\yiisoft\yii2\base\View.php(330): require('D:\\Server\\www\\1...')
#3 %project_path%\vendor\yiisoft\yii2\base\View.php(250): yii\base\View->renderPhpFile('D:\\Server\\www\\1...', Array)
#4 %project_path%\vendor\yiisoft\yii2\web\ErrorHandler.php(249): yii\base\View->renderFile('@yii/views/erro...', Array, Object(yii\web\ErrorHandler))
#5 %project_path%\vendor\yiisoft\yii2\web\ErrorHandler.php(304): yii\web\ErrorHandler->renderFile('@yii/views/erro...', Array)
#6 %project_path%\vendor\yiisoft\yii2\web\ErrorHandler.php(326): yii\web\ErrorHandler->renderCallStackItem('D:\\Server\\www\\1...', 51, 'frontend\\models...', 'getCatalogItems', Array, 3)
#7 %project_path%\vendor\yiisoft\yii2\views\errorHandler\exception.php(381): yii\web\ErrorHandler->renderCallStack(Object(yii\base\UnknownMethodException))
#8 %project_path%\vendor\yiisoft\yii2\base\View.php(330): require('D:\\Server\\www\\1...')
#9 %project_path%\vendor\yiisoft\yii2\base\View.php(250): yii\base\View->renderPhpFile('D:\\Server\\www\\1...', Array)
#10 %project_path%\vendor\yiisoft\yii2\web\ErrorHandler.php(249): yii\base\View->renderFile('@yii/views/erro...', Array, Object(yii\web\ErrorHandler))
#11 %project_path%\vendor\yiisoft\yii2\web\ErrorHandler.php(116): yii\web\ErrorHandler->renderFile('@yii/views/erro...', Array)
#12 %project_path%\vendor\yiisoft\yii2\base\ErrorHandler.php(111): yii\web\ErrorHandler->renderException(Object(yii\base\UnknownMethodException))
#13 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\base\UnknownMethodException))
#14 {main}
Previous exception:
exception 'yii\base\UnknownMethodException' with message 'Calling unknown method: frontend\models\CatalogItemsSearch::getCatalogItems()' in %project_path%\vendor\yiisoft\yii2\base\Component.php:290
Stack trace:
#0 %project_path%\frontend\widgets\views\filters.php(51): yii\base\Component->__call('getCatalogItems', Array)
#1 %project_path%\frontend\widgets\views\filters.php(51): frontend\models\CatalogItemsSearch->getCatalogItems()
#2 %project_path%\vendor\yiisoft\yii2\base\View.php(330): require('D:\\Server\\www\\1...')
#3 %project_path%\vendor\yiisoft\yii2\base\View.php(250): yii\base\View->renderPhpFile('D:\\Server\\www\\1...', Array)
#4 %project_path%\vendor\yiisoft\yii2\base\View.php(152): yii\base\View->renderFile('D:\\Server\\www\\1...', Array, Object(frontend\widgets\Filters))
#5 %project_path%\vendor\yiisoft\yii2\base\Widget.php(234): yii\base\View->render('filters', Array, Object(frontend\widgets\Filters))
#6 %project_path%\frontend\widgets\Filters.php(31): yii\base\Widget->render('filters', Array)
#7 %project_path%\vendor\yiisoft\yii2\base\Widget.php(139): frontend\widgets\Filters->run()
#8 %project_path%\frontend\views\catalog\brand.php(36): yii\base\Widget::widget(Array)
#9 %project_path%\vendor\yiisoft\yii2\base\View.php(330): require('D:\\Server\\www\\1...')
#10 %project_path%\vendor\yiisoft\yii2\base\View.php(250): yii\base\View->renderPhpFile('D:\\Server\\www\\1...', Array)
#11 %project_path%\vendor\yiisoft\yii2\base\View.php(152): yii\base\View->renderFile('D:\\Server\\www\\1...', Array, Object(frontend\controllers\CatalogController))
#12 %project_path%\vendor\yiisoft\yii2\base\Controller.php(381): yii\base\View->render('brand', Array, Object(frontend\controllers\CatalogController))
#13 %project_path%\frontend\controllers\CatalogController.php(62): yii\base\Controller->render('brand', Array)
#14 [internal function]: frontend\controllers\CatalogController->actionBrand('A. Lange & Sohn...')
#15 %project_path%\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array)
#16 %project_path%\vendor\yiisoft\yii2\base\Controller.php(156): yii\base\InlineAction->runWithParams(Array)
#17 %project_path%\vendor\yiisoft\yii2\base\Module.php(523): yii\base\Controller->runAction('brand', Array)
#18 %project_path%\vendor\yiisoft\yii2\web\Application.php(102): yii\base\Module->runAction('catalog/brand', Array)
#19 %project_path%\vendor\yiisoft\yii2\base\Application.php(380): yii\web\Application->handleRequest(Object(yii\web\Request))
#20 %project_path%\frontend\web\index.php(17): yii\base\Application->run()
#21 {main}

Additional info

| Q | A
| ---------------- | ---
| Yii version | 2.0.12
| PHP version | 5.6
| Operating system | Windows

on php 7.0 work is fine (show Yii error page)

bug

Most helpful comment

yes, repeated on clean install with debug mode on.

create project with composer create-project --prefer-dist yiisoft/yii2-app-basic yii-basic

to controllers\SiteController::actionIndex() add call undefined method (ex $this->notDefinedMethod();) before return ... and open site index page

and see this

An Error occurred while handling another error:
exception 'ReflectionException' with message 'Method app\controllers\SiteController::notDefinedMethod() does not exist' in D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php:195
Stack trace:
#0 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php(195): ReflectionMethod->__construct('app\\controllers...', 'notDefinedMetho...')
#1 D:\Server\www\yii-basic\vendor\yiisoft\yii2\views\errorHandler\callStackItem.php(26): yii\web\ErrorHandler->addTypeLinks('app\\controllers...')
#2 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\View.php(330): require('D:\\Server\\www\\y...')
#3 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\View.php(250): yii\base\View->renderPhpFile('D:\\Server\\www\\y...', Array)
#4 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php(249): yii\base\View->renderFile('@yii/views/erro...', Array, Object(yii\web\ErrorHandler))
#5 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php(304): yii\web\ErrorHandler->renderFile('@yii/views/erro...', Array)
#6 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php(326): yii\web\ErrorHandler->renderCallStackItem('D:\\Server\\www\\y...', 64, 'app\\controllers...', 'notDefinedMetho...', Array, 3)
#7 D:\Server\www\yii-basic\vendor\yiisoft\yii2\views\errorHandler\exception.php(381): yii\web\ErrorHandler->renderCallStack(Object(yii\base\UnknownMethodException))
#8 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\View.php(330): require('D:\\Server\\www\\y...')
#9 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\View.php(250): yii\base\View->renderPhpFile('D:\\Server\\www\\y...', Array)
#10 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php(249): yii\base\View->renderFile('@yii/views/erro...', Array, Object(yii\web\ErrorHandler))
#11 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php(116): yii\web\ErrorHandler->renderFile('@yii/views/erro...', Array)
#12 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\ErrorHandler.php(111): yii\web\ErrorHandler->renderException(Object(yii\base\UnknownMethodException))
#13 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\base\UnknownMethodException))
#14 {main}
Previous exception:
exception 'yii\base\UnknownMethodException' with message 'Calling unknown method: app\controllers\SiteController::notDefinedMethod()' in D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\Component.php:290
Stack trace:
#0 D:\Server\www\yii-basic\controllers\SiteController.php(64): yii\base\Component->__call('notDefinedMetho...', Array)
#1 D:\Server\www\yii-basic\controllers\SiteController.php(64): app\controllers\SiteController->notDefinedMethod()
#2 [internal function]: app\controllers\SiteController->actionIndex()
#3 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array)
#4 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\Controller.php(156): yii\base\InlineAction->runWithParams(Array)
#5 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\Module.php(523): yii\base\Controller->runAction('', Array)
#6 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\Application.php(102): yii\base\Module->runAction('', Array)
#7 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\Application.php(380): yii\web\Application->handleRequest(Object(yii\web\Request))
#8 D:\Server\www\yii-basic\web\index.php(12): yii\base\Application->run()
#9 {main}

early reporting for similar bug https://github.com/yiisoft/yii2/issues/13697

All 5 comments

Thanks for posting in our issue tracker.
In order to properly assist you, we need additional information:

  • When does the issue occur?
  • What do you see?
  • What was the expected result?
  • Can you supply us with a stacktrace? (optional)
  • Do you have exact code to reproduce it? Maybe a PHPUnit tests that fails? (optional)

Thanks!

_This is an automated comment, triggered by adding the label status:need more info._

Does it happen on clean basic template install on debug mode?

yes, repeated on clean install with debug mode on.

create project with composer create-project --prefer-dist yiisoft/yii2-app-basic yii-basic

to controllers\SiteController::actionIndex() add call undefined method (ex $this->notDefinedMethod();) before return ... and open site index page

and see this

An Error occurred while handling another error:
exception 'ReflectionException' with message 'Method app\controllers\SiteController::notDefinedMethod() does not exist' in D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php:195
Stack trace:
#0 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php(195): ReflectionMethod->__construct('app\\controllers...', 'notDefinedMetho...')
#1 D:\Server\www\yii-basic\vendor\yiisoft\yii2\views\errorHandler\callStackItem.php(26): yii\web\ErrorHandler->addTypeLinks('app\\controllers...')
#2 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\View.php(330): require('D:\\Server\\www\\y...')
#3 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\View.php(250): yii\base\View->renderPhpFile('D:\\Server\\www\\y...', Array)
#4 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php(249): yii\base\View->renderFile('@yii/views/erro...', Array, Object(yii\web\ErrorHandler))
#5 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php(304): yii\web\ErrorHandler->renderFile('@yii/views/erro...', Array)
#6 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php(326): yii\web\ErrorHandler->renderCallStackItem('D:\\Server\\www\\y...', 64, 'app\\controllers...', 'notDefinedMetho...', Array, 3)
#7 D:\Server\www\yii-basic\vendor\yiisoft\yii2\views\errorHandler\exception.php(381): yii\web\ErrorHandler->renderCallStack(Object(yii\base\UnknownMethodException))
#8 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\View.php(330): require('D:\\Server\\www\\y...')
#9 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\View.php(250): yii\base\View->renderPhpFile('D:\\Server\\www\\y...', Array)
#10 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php(249): yii\base\View->renderFile('@yii/views/erro...', Array, Object(yii\web\ErrorHandler))
#11 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\ErrorHandler.php(116): yii\web\ErrorHandler->renderFile('@yii/views/erro...', Array)
#12 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\ErrorHandler.php(111): yii\web\ErrorHandler->renderException(Object(yii\base\UnknownMethodException))
#13 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\base\UnknownMethodException))
#14 {main}
Previous exception:
exception 'yii\base\UnknownMethodException' with message 'Calling unknown method: app\controllers\SiteController::notDefinedMethod()' in D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\Component.php:290
Stack trace:
#0 D:\Server\www\yii-basic\controllers\SiteController.php(64): yii\base\Component->__call('notDefinedMetho...', Array)
#1 D:\Server\www\yii-basic\controllers\SiteController.php(64): app\controllers\SiteController->notDefinedMethod()
#2 [internal function]: app\controllers\SiteController->actionIndex()
#3 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array)
#4 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\Controller.php(156): yii\base\InlineAction->runWithParams(Array)
#5 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\Module.php(523): yii\base\Controller->runAction('', Array)
#6 D:\Server\www\yii-basic\vendor\yiisoft\yii2\web\Application.php(102): yii\base\Module->runAction('', Array)
#7 D:\Server\www\yii-basic\vendor\yiisoft\yii2\base\Application.php(380): yii\web\Application->handleRequest(Object(yii\web\Request))
#8 D:\Server\www\yii-basic\web\index.php(12): yii\base\Application->run()
#9 {main}

early reporting for similar bug https://github.com/yiisoft/yii2/issues/13697

fixed, thanks for reporting!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

MUTOgen picture MUTOgen  路  3Comments

nokimaro picture nokimaro  路  3Comments

skcn022 picture skcn022  路  3Comments

schmunk42 picture schmunk42  路  3Comments

Locustv2 picture Locustv2  路  3Comments