2014-10-12 37 views
0

我使用yii框架来做web开发,文本是从特定的php文件调用的,以帮助我交换语言。一些我如何从JS文件添加一些消息,但我仍然需要yii php来调用文本。怎么做?如果我的编码如何在JS文件中添加php代码

我想更改“英文:26个字符”,“中文:16个字符”和“其他:16个字符”。

因为从其他PHP警予调用文字是这样的:

在labels.php是这样的:

(如: 'englishchar'=> '英语:26字')

于是打电话给文字是这样的:

eg:<?php echo Yii::t('labels','englishchar');?> 


$(function() { 
     $('#select_gametitle').change(function() { 
      var k = $(this).val(); 

      if (k == "E") { 
       $("#txtgametitle").attr("placeholder", "English: 26 characters").placeholder(); 
       $("#txtgametitle").attr('maxlength', '26'); 
      } 
      else if (k == "C") { 
       $("#txtgametitle").attr("placeholder", "Chinese: 16 characters").placeholder(); 
       $("#txtgametitle").attr('maxlength', '26'); 
      } 
      else if (k == "O") { 
       $("#txtgametitle").attr("placeholder", "Other: 16 characters").placeholder(); 
       $("#txtgametitle").attr('maxlength', '26'); 
      } 
      }); 
       $('input[placeholder], textarea[placeholder]').placeholder(); 
     }); 

PHP代码:

      <div class="inputWrapper"> 
          <div class="usetitle">* <?php echo Yii::t('labels', 'gametitle'); ?> :</div> 
          <select id="select_gametitle" name="select_gametitle" class="selectInput" style="width:369px;"> 
           <option value=""><?php echo Yii::t('labels', 'select_gametitle'); ?></option> 
           <option value="E"><?php echo Yii::t('labels', 'english'); ?></option> 
           <option value="C"><?php echo Yii::t('labels', 'chinese'); ?></option> 
           <option value="O"><?php echo Yii::t('labels', 'other'); ?></option> 
          </select> 
          <div id="err_select_gametitle" class="error"></div> 
           <input id="txtgametitle" name="txtgametitle" type="text" class="textInput" style="width:352px;" placeholder="" /> 

         </div> 
+0

你可以发布你的PHP代码,所以我们可以给你的工作的例子吗? – 2014-10-12 05:43:19

+2

如果该文件是一个php文件,您可以简单地在javascript内部的引号之间添加。 – icecub 2014-10-12 05:45:01

+0

@AntoanMilkov发布了 – TheSmile 2014-10-12 22:40:05

回答

0

您可以将它作为全局变量添加到您的主布局文件中的变量内。

/view/layouts/main.php:

<?php 
    Yii::app()->getClientScript()->registerCoreScript('jquery.ui'); 
    Yii::app()->clientScript->registerCssFile(Yii::app()->clientScript->getCoreScriptUrl().'/jui/css/base/jquery-ui.css'); 
?> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <meta name="language" content="en" /> 

    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->theme->baseUrl; ?>/css/styles.css" /> 

    <title><?php echo CHtml::encode($this->pageTitle); ?></title> 

    <?php Yii::app()->bootstrap->register(); ?> 
    <link rel="stylesheet" href="<?php echo Yii::app()->baseUrl; ?>/css/font-awesome-4.0.3/css/font-awesome.min.css"> 
    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->baseUrl; ?>/css/style.css" /> 
    <script> 
     eg:<?php echo Yii::t('labels','englishchar');?> 
    </script> 
</head> 

<body> 
+0

真的不明白你想说什么 – TheSmile 2014-10-12 22:36:47

0

你可以在div之前添加脚本,从PHP,例如:

<!--just add your script code--> 
<script> 
    $(function() { 
    //your js code 
    <?php echo "with text printed by php"); ?> 
    }); 
</script> 

<!--and now your html code, also with embedded PHP--> 
<div class="inputWrapper"> 
    <div class="usetitle">* <?php echo Yii::t('labels', 'gametitle'); ?> :</div> 
    <!--the rest of your div--> 
</div> 
+0

php代码和js脚本被分离到不同的文件...我需要的是把php放在js文件中...不是在php文件 – TheSmile 2014-10-15 01:18:45

+0

在js代码中的PHP代码是不可能的。 PHP在服务器上运行,JS在用户的浏览器上运行。 – 2014-10-15 01:53:06

0

你可以回声出翻译成JSON。

Yii::app()->clientScript->registerScript('test', 
      'var lang =' . json_encode(array(
     'message1'=>Yii::t('app','Message 1'), 
     'message2'=>Yii::t('app','Message 2'),    
    )) . '; console.log(lang.word1)'); 

    $this->render('json'); 

从这个扩展,你可以使用AJAX和JS模板

+0

你能解释一下吗?如何把这个在我的JS文件? – TheSmile 2014-10-14 00:59:57

+0

您不能将PHP脚本放入Javascript文件。从我的示例中,您可以使用PHP中生成动态Javascript。另一种方法是从控制器使用renderPartial并将其传递给registerScript – 2014-11-13 10:56:11