Yii2:将手机屏幕显示为文本

时间:2018-05-14 15:24:13

标签: yii2

告诉我如何以可读的方式输出手机?

它以1234567890的形式存储在数据库中,但您需要显示用户 - (123) 456-78-90

我不想做一个花园,obvio,我们已经有了现成的解决方案。

在控制器

public function actionShowPhone()
{
 $phone = "1234567890";
 return $this->render('show-phone', ['phone' => $phone,]);
}

在视图中显示show-phone.php

<?= Html::encode($phone) ?>

1 个答案:

答案 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