告诉我如何以可读的方式输出手机?
它以1234567890
的形式存储在数据库中,但您需要显示用户 - (123) 456-78-90
。
我不想做一个花园,obvio,我们已经有了现成的解决方案。
在控制器
中public function actionShowPhone()
{
$phone = "1234567890";
return $this->render('show-phone', ['phone' => $phone,]);
}
在视图中显示show-phone.php
<?= Html::encode($phone) ?>
答案 0 :(得分:3)
如果您要在{{if service 'web' 'passing'}}
"{{range $index, $service := service 'web'}}{{if ne $index 0}},{{end}}{{.Address}}{{end}}"
内格式化电话号码,可以按以下方式使用\yii\widgets\MaskInput
ActiveForm
或没有<?=
$form->field($model, 'landline_phone')->widget(\yii\widgets\MaskedInput::className(), [
'mask' => '(999)-999-99-99'
]);
?>
ActiveForm
注意:保存echo \yii\widgets\MaskedInput::widget([
'name' => 'phone',
'mask' => '(999)-999-99-99',
]);
字段时,您必须将其另存为phone
等数据库中的数字,因此在保存之前可以使用1234567890
$this->landline_phone= preg_replace('/[^0-9]+/', '', $this->landline_phone);
。
<强> beforeSave()
强>
但是如果你想以上述格式打印电话号码作为文本,那么一个好方法是扩展yii\i18n\Formatter
并创建一个自定义组件/助手,比如说Extending the \yii\i18n\Formatter
或{{1使用以下代码。
注意:相应地更改班级的common\components\
app\components\
然后在namespace
或<?php
namespace common\components;
use yii\i18n\Formatter;
class FormatterHelper extends Formatter {
public function asPhone($value) {
return preg_replace("/^(\d{3})(\d{3})(\d{2})(\d{2})$/", "($1)-$2-$3-$4", $value);
}
}
下添加以下common\config\main.php
下的内容。
app\config\web.php
然后你可以像下面那样使用它
components
并将输出以下内容作为文本
'formatter' => [
'class' => '\common\components\FormatterHelper',
'locale' => 'en-US',
'dateFormat' => 'yyyy-MM-dd',
'datetimeFormat' => 'yyyy-MM-dd HH:mm:ss',
'decimalSeparator' => '.',
'thousandSeparator' => ',',
'currencyCode' => 'USD'
],
<强> echo Yii::$app->formatter->asPhone('123456789')
强>
另一种最简单,最简单的方法是注册使用RobinHerbots/Inputmask
捆绑的可用(123)-456-78-90
并使用javascript来屏蔽文字
Using \yii\widgets\MaskedInputAssets