Модель, контроллер, Crud из таблицы БД id, filename
По документации добавила use UploadFile
Ошибка
Код: Выделить всё
exception 'yii\base\UnknownMethodException' with message 'Calling unknown method: app\modules\admin\models\Xls::upload()' in /Users/svetlanailina/Sites/lema10/vendor/yiisoft/yii2/base/Component.php:300
Stack trace:
#0 /Users/svetlanailina/Sites/lema10/modules/admin/controllers/XlsController.php(73): yii\base\Component->__call('upload', Array)
#1 /Users/svetlanailina/Sites/lema10/modules/admin/controllers/XlsController.php(73): app\modules\admin\models\Xls->upload()
#2 [internal function]: app\modules\admin\controllers\XlsController->actionCreate()
#3 /Users/svetlanailina/Sites/lema10/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#4 /Users/svetlanailina/Sites/lema10/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#5 /Users/svetlanailina/Sites/lema10/vendor/yiisoft/yii2/base/Module.php(528): yii\base\Controller->runAction('create', Array)
#6 /Users/svetlanailina/Sites/lema10/vendor/yiisoft/yii2/web/Application.php(103): yii\base\Module->runAction('admin/xls/creat...', Array)
#7 /Users/svetlanailina/Sites/lema10/vendor/yiisoft/yii2/base/Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#8 /Users/svetlanailina/Sites/lema10/web/index.php(18): yii\base\Application->run()
#9 {main}
Copy Stacktrace Search Stackoverflow Search Google Exception
Unknown Method – yii\base\UnknownMethodException
Calling unknown method: app\modules\admin\models\Xls::upload()
1. in /Users/svetlanailina/Sites/lema10/vendor/yiisoft/yii2/base/Component.php at line 300
291292293294295296297298299300301302303304305306307308309 */
public function __call($name, $params)
{
$this->ensureBehaviors();
foreach ($this->_behaviors as $object) {
if ($object->hasMethod($name)) {
return call_user_func_array([$object, $name], $params);
}
}
throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}
/**
* This method is called after the object is created by cloning an existing one.
* It removes all behaviors because they are attached to the old object.
*/
public function __clone()
{
$this->_events = [];
2. in /Users/svetlanailina/Sites/lema10/modules/admin/controllers/XlsController.php at line 73 – yii\base\Component::__call('upload', [])
67686970717273747576777879 {
$model = new Xls();
if (Yii::$app->request->isPost) {
$model->filename = UploadedFile::getInstance($model, 'filename');
if ($model->upload()) {
// file is uploaded successfully
return;
}
}
return $this->render('create', [
'model' => $model,
3. in /Users/svetlanailina/Sites/lema10/modules/admin/controllers/XlsController.php at line 73 – app\modules\admin\models\Xls::upload()
67686970717273747576777879 {
$model = new Xls();
if (Yii::$app->request->isPost) {
$model->filename = UploadedFile::getInstance($model, 'filename');
if ($model->upload()) {
// file is uploaded successfully
return;
}
}
return $this->render('create', [
'model' => $model,
4. app\modules\admin\controllers\XlsController::actionCreate()
5. in /Users/svetlanailina/Sites/lema10/vendor/yiisoft/yii2/base/InlineAction.php at line 57 – call_user_func_array([app\modules\admin\controllers\XlsController, 'actionCreate'], [])
6. in /Users/svetlanailina/Sites/lema10/vendor/yiisoft/yii2/base/Controller.php at line 157 – yii\base\InlineAction::runWithParams([])
7. in /Users/svetlanailina/Sites/lema10/vendor/yiisoft/yii2/base/Module.php at line 528 – yii\base\Controller::runAction('create', [])
8. in /Users/svetlanailina/Sites/lema10/vendor/yiisoft/yii2/web/Application.php at line 103 – yii\base\Module::runAction('admin/xls/create', [])
9. in /Users/svetlanailina/Sites/lema10/vendor/yiisoft/yii2/base/Application.php at line 386 – yii\web\Application::handleRequest(yii\web\Request)
10. in /Users/svetlanailina/Sites/lema10/web/index.php at line 18 – yii\base\Application::run()
12131415161718require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
require __DIR__ . '/../functions.php';
$config = require(__DIR__ . '/../config/web.php');
(new yii\web\Application($config))->run();
$_POST = [
'_csrf' => 'MF1f2Q1mat9_kqQXVCjocqPVs-EgYHuPZAoM5C37JmMHFjnvewsvukmm4Ho-bp8dwp380WNNEcgzYWvRQ6lvFA==',
'Xls' => [
'filename' => '',
],
];
$_FILES = [
'Xls' => [
'name' => [
'filename' => 'price2.xlsx',
],
'type' => [
'filename' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
],
'tmp_name' => [
'filename' => '/private/var/tmp/phpxkwqK7',
],
'error' => [
'filename' => 0,
],
'size' => [
'filename' => 14107,
],
],
];
$_COOKIE = [
'_identity' => 'cf22dc51a51f3622b87394b23f26dc65ac64648e10993a0c8bc5ca53dffd449da:2:{i:0;s:9:"_identity";i:1;s:28:"["100","test100key",2592000]";}',
'_csrf' => '1655de35c4c7880982038480de9fac155994f0f90777192ca0ce4b0e5811038ca:2:{i:0;s:5:"_csrf";i:1;s:32:"7Kf6vmEe64DmjFwoaHO0C-jGWkg5nRIw";}',
'PHPSESSID' => '24qcoe6m9k5hnrccsf6mk9rvb7',
'dcjq-accordion' => '',
];
$_SESSION = [
'__flash' => [],
'__id' => '100',
'elFinderCaches' => [
'_optsMD5' => '7756f7eb42a5de125dd99780a622ecd1',
'l1_' => [
'rootstat' => [
'8f88b6c88368f68cb5cd8dca45700799' => [
'isowner' => false,
'ts' => 1555579759,
'mime' => 'directory',
'read' => 1,
'write' => 1,
'size' => 0,
'hash' => 'l1_Lw',
'name' => 'Global',
'rootRev' => '',
'options' => [
'path' => '',
'url' => '/upload/global/',
'tmbUrl' => 'http://lema_work/assets/894972df/92e919de9b34fafeff997777697cf506/',
'disabled' => [
'chmod',
],
'separator' => '/',
'copyOverwrite' => 1,
'uploadOverwrite' => 1,
'uploadMaxSize' => 9223372036854775807,
'uploadMaxConn' => 3,
'uploadMime' => [
'firstOrder' => 'deny',
'allow' => [],
'deny' => [],
],
'dispInlineRegex' => '^(?:(?:video|audio)|image/(?!.+\\+xml)|application/(?:ogg|x-mpegURL|dash\\+xml)|(?:text/plain|application/pdf)$)',
'jpgQuality' => 100,
'archivers' => [
'create' => [
'application/x-tar',
'application/x-gzip',
'application/x-bzip2',
'application/x-xz',
'application/zip',
],
'extract' => [
'application/x-tar',
'application/x-gzip',
'application/x-bzip2',
'application/x-xz',
'application/zip',
],
'createext' => [
'application/x-tar' => 'tar',
'application/x-gzip' => 'tgz',
'application/x-bzip2' => 'tbz',
'application/x-xz' => 'xz',
'application/zip' => 'zip',
],
],
'uiCmdMap' => [],
'syncChkAsTs' => 1,
'syncMinMs' => 10000,
'i18nFolderName' => 0,
'tmbCrop' => 1,
'substituteImg' => true,
'onetimeUrl' => false,
'csscls' => 'elfinder-navbar-root-local',
],
'volumeid' => 'l1_',
'locked' => 1,
'isroot' => 1,
'phash' => '',
],
],
'subdirs' => [
'/Users/svetlanailina/Sites/lema10/web/upload/global' => false,
],
],
'archivers' => [
'create' => [
'application/x-tar' => [
'cmd' => 'tar',
'argc' => '-cf',
'ext' => 'tar',
],
'application/x-gzip' => [
'cmd' => 'tar',
'argc' => '-czf',
'ext' => 'tgz',
],
'application/x-bzip2' => [
'cmd' => 'tar',
'argc' => '-cjf',
'ext' => 'tbz',
],
'application/x-xz' => [
'cmd' => 'tar',
'argc' => '-cJf',
'ext' => 'xz',
],
'application/zip' => [
'cmd' => 'zip',
'argc' => '-r9 -q',
'ext' => 'zip',
],
],
'extract' => [
'application/x-tar' => [
'cmd' => 'tar',
'argc' => '-xf',
'ext' => 'tar',
'toSpec' => '-C ',
],
'application/x-gzip' => [
'cmd' => 'tar',
'argc' => '-xzf',
'ext' => 'tgz',
'toSpec' => '-C ',
],
'application/x-bzip2' => [
'cmd' => 'tar',
'argc' => '-xjf',
'ext' => 'tbz',
'toSpec' => '-C ',
],
'application/x-xz' => [
'cmd' => 'tar',
'argc' => '-xJf',
'ext' => 'xz',
'toSpec' => '-C ',
],
'application/zip' => [
'cmd' => 'unzip',
'argc' => '-q',
'ext' => 'zip',
'toSpec' => '-d ',
],
],
],
'videoLib' => '',
':LAST_ACTIVITY' => 1555579774,
'urlContentSaveIds' => [],
],
'elFinderNetVolumes' => [],
];
Yii Framework
2019-04-18, 15:22:21
Apache/2.4.37 (Unix) PHP/5.6.38
Yii Framework/2.0.17
Yii 2.0.17 PHP 5.6.38 Status 500 Route admin/xls/create Log 29 1 Time 53 ms Memory 3.864 MB DB 2 4 ms Events 23 User 100
Код: Выделить всё
<?php
namespace app\modules\admin\models;
use Yii;
/**
* This is the model class for table "xls".
*
* @property int $id
* @property int $filename
* @property int $extension
*/
class Xls extends \yii\db\ActiveRecord
{
/**
* {@inheritdoc}
*/
public static function tableName()
{
return 'xls';
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[['filename'], 'required'],
[
'filename',
'file',
'extensions' => 'xlsx, xls',
'mimeTypes' =>
'application/zip, '
.'text/plain, '
.'application/x-dbf, '
.'application/vnd.ms-excel, '
.'application/vnd.oasis.opendocument.spreadsheet, '
.'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'checkExtensionByMimeType' => false
],
];
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'filename' => 'Filename',
];
}
}
Код: Выделить всё
<?php
namespace app\modules\admin\controllers;
use Yii;
use app\modules\admin\models\Xls;
use yii\data\ActiveDataProvider;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\web\UploadedFile;
/**
* XlsController implements the CRUD actions for Xls model.
*/
class XlsController extends Controller
{
/**
* {@inheritdoc}
*/
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['POST'],
],
],
];
}
/**
* Lists all Xls models.
* @return mixed
*/
public function actionIndex()
{
$dataProvider = new ActiveDataProvider([
'query' => Xls::find(),
]);
return $this->render('index', [
'dataProvider' => $dataProvider,
]);
}
/**
* Displays a single Xls model.
* @param integer $id
* @return mixed
* @throws NotFoundHttpException if the model cannot be found
*/
public function actionView($id)
{
return $this->render('view', [
'model' => $this->findModel($id),
]);
}
/**
* Creates a new Xls model.
* If creation is successful, the browser will be redirected to the 'view' page.
* @return mixed
*/
public function actionCreate()
{
$model = new Xls();
if (Yii::$app->request->isPost) {
$model->filename = UploadedFile::getInstance($model, 'filename');
if ($model->upload()) {
// file is uploaded successfully
return;
}
}
return $this->render('create', [
'model' => $model,
]);
}
/**
* Updates an existing Xls model.
* If update is successful, the browser will be redirected to the 'view' page.
* @param integer $id
* @return mixed
* @throws NotFoundHttpException if the model cannot be found
*/
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
return $this->render('update', [
'model' => $model,
]);
}
/**
* Deletes an existing Xls model.
* If deletion is successful, the browser will be redirected to the 'index' page.
* @param integer $id
* @return mixed
* @throws NotFoundHttpException if the model cannot be found
*/
public function actionDelete($id)
{
$this->findModel($id)->delete();
return $this->redirect(['index']);
}
/**
* Finds the Xls model based on its primary key value.
* If the model is not found, a 404 HTTP exception will be thrown.
* @param integer $id
* @return Xls the loaded model
* @throws NotFoundHttpException if the model cannot be found
*/
protected function findModel($id)
{
if (($model = Xls::findOne($id)) !== null) {
return $model;
}
throw new NotFoundHttpException('The requested page does not exist.');
}
}
Код: Выделить всё
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $model app\modules\admin\models\Xls */
/* @var $form yii\widgets\ActiveForm */
?>
<div class="xls-form">
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
<?= $form->field($model, 'filename')->fileInput() ?>
<div class="form-group">
<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>