我正在尝试创建一个自定义类,可以调用它来转换MySQL的日期和时间。
我正在使用Yii2 Basic模板
我在名为Convert.php的组件中创建了一个文件夹和一个文件
<?
namespace app\components;
use Yii;
class Convert
{
const DATE_FORMAT = 'php:Y-m-d';
const DATETIME_FORMAT = 'php:Y-m-d H:i:s';
const TIME_FORMAT = 'php:H:i:s';
public static function toMysql($dateStr, $type='date', $format = null) {
if ($type === 'datetime') {
$fmt = ($format == null) ? self::DATETIME_FORMAT : $format;
}
elseif ($type === 'time') {
$fmt = ($format == null) ? self::TIME_FORMAT : $format;
}
else {
$fmt = ($format == null) ? self::DATE_FORMAT : $format;
}
return \Yii::$app->formatter->asDate($dateStr, $fmt);
}
}
?>
然后我尝试在我的控制器中调用此方法
use app\components\Convert;
...
public function actionCreate()
{
...
$model->date_of_birth = Convert::toMysql($model->date_of_birth);
...
}
但是我收到以下错误
无法找到&#39; app \ components \ Convert&#39;在文件中:/var/www/html/portal/components/Convert.php。命名空间丢失了吗?
我可能遗漏了一些简单的东西,但我看不到它。
感谢您的帮助。
利安
从评论中我发现错误是一个简单的错误,开始标记应该是
<?php
答案 0 :(得分:1)
您需要从Yii2扩展基本组件:
<?php
namespace app\components;
use yii\base\Component;
use Yii;
class Convert extends Component
{
const DATE_FORMAT = 'php:Y-m-d';
然后输入config / web.php
'components' => [
'convert' => [
'class' => 'app\components\Convert',
],
]
并以
的形式访问它$model->date_of_birth = Yii::$app->convert->toMysql($model->date_of_birth);
答案 1 :(得分:1)
此错误只是意味着php无法在此文件中找到命名空间,并且由于命名空间似乎是正确的,因此可能是php开启标记错误。
根据您的服务器php配置,short open tags可能已停用,您应始终使用<?php
。