我正在使用Yii2
,我想创建一个能够执行快速搜索的网络应用程序。
例如,当我在文本框中键入字符时,会显示结果
当我们只有一种语言但{strong> 多语言 模式下如何?{/ 1>}时,ajax
会很容易?
答案 0 :(得分:1)
首先为您的网站设置多语言,doc为此。
为您的网站自动支持多语言的最佳方式是使用Cookie变量进行语言。您可以通过任何操作设置语言Cookie
public function actionLanguage()
{
if (isset($_POST['lang'])) {
$language = $_POST['lang'];
if (($langaugeModel = \app\models\Langauge::findOne(['name' => $language])) !== null) {
$varLang = [
'id' => $langaugeModel->id,
'name' => $langaugeModel->name,
'iso1' => $langaugeModel->iso1,
'iso2' => $langaugeModel->iso2
];
$cookies = new Cookie([
'name' => 'lang',
'value' => json_encode($varLang),
]);
yii::$app->getResponse()->getCookies()->add($cookies);
return $this->goBack((!empty(Yii::$app->request->referrer) ? Yii::$app->request->referrer : null));
} else {
throw new NotFoundHttpException('The requested langauge does not exist.');
}
} else {
return $this->goBack((!empty(Yii::$app->request->referrer) ? Yii::$app->request->referrer : null));
}
}
我在这里做的是将网站的所有语言支持放在数据库中并生成必要的cookie变量并将其放在客户端浏览器上。
接下来在config / web.php文件中将您的yii2站点的请求事件设置为
'as beforeRequest' => [
'class' => 'app\components\MyBehavior',
],
然后创建组件\ Mybehaviou.php文件并放置此代码
namespace app\components;
use yii;
use yii\base\Behavior;
class MyBehavior extends Behavior
{
public function events(){
return [
\yii\web\Application::EVENT_BEFORE_REQUEST => 'myBehavior',
];
}
public function myBehavior(){
if (\yii::$app->getRequest()->getCookies()->has('lang')) {
$langIso = 'sdn';
\yii::$app->language = $langIso;
$langaugeVar = \yii::$app->getRequest()->getCookies()->getValue('lang');
$langauge = json_decode($langaugeVar);
$langIso = $langauge->iso2;
\yii::$app->language = $langIso;
}
}
}
这会创建取决于客户端的站点语言,因为它取决于客户端的cookie。
然后根据网站语言(\ yii :: $ app-> language)
创建搜索控制器 上找到演示和配置