Re: [问题] function接收变量

楼主: meteorsok (花花小蛋糕)   2014-11-13 09:56:49
: 推 meteorsok: <input onclick="func('<?php echo $text; ?>')" /> 11/12 15:00
: → oppositebank: 原来echo放这! 感谢楼上 11/13 02:16
: → carylorrk: 这种 code 维护大概会很头痛吧。 11/13 03:19
的确会头痛
但这个答案对新手来说,可以了解php最基本嵌入网页的方式
当然有其他解法,但除了ajax call api 取得参数以外
我想都逃离不了这种嵌入的概念
原问题:想要将一个php变量当成button的参数使用,应该都是以下几种方式
1. 我的推文
2. 改放在attr,function 带 this 去拿
3. 另外放在js变量,用js来产生元素时带入
4 ajax call api拿参数
1~3几乎都是一样的概念,只是嵌入的位置不同
或许可以用一些framework的helper来美化
<?php echo Helper::button($text, array("some_attr"=>$value)); ?>
或者用template engine来跑
<button some_attr="{% value %}"></button>
好看,但原理一样
即使用js template 来产生元素
还是要用嵌入的方式给js吃点东西
当然可以用第四种ajax call api拿
这种就真的可以达到前后端分离了
最后
如果一个新手直接学framework (js: jquery , php: laravel)
而不了解基本的东西
我想并不是一件好事情
如果我有什么误解,希望可以有高手来指正
我也想学习
感恩~
作者: carylorrk (carylorrk)   2014-11-13 11:44:00
well..我赞成你的意见,而且事实上就这个例子来说的确没有超出把 php 当成 template language 来使用的适合范畴。只是我写的经验是,PHP 同时可以作为撰写逻辑的程式语言及和 HTML 混杂的 template 语言本身就对新手造成一些 web programming 基础的 confusion要记得 PHP 这个嵌入的语言并不是网页程式原本就有的样子,从以前俗称写 CGI 的 C++ 到现在的 Python、Ruby都是 general purpose language 拿来写 web,所以他们的framework 都会明确的说出自己在原本语言上建构了哪些适合语言的模型。就算不用 framework,处理 HTTP req久了也会自己出现像是用 string + variable 这种"template" 方式。没错,并不是一定要有 templatelanguage 才叫做 template XD...不过就算如此,和你说的一样这也只是把资料嵌入的概念差别在于,PHP 让你误以为 template 是 "另一种方式",从而让你习惯把资料、逻辑、presentation 混杂在一起。如果没有意识到 PHP 作为 template language 和programming language 的职责区分,很容易有这种情况。而且 PHP 作为 template language 本身有些缺陷,像是语法太繁琐、缺少(或需要特殊技巧)template language的一些 feature (ex: inheritance)。既然本来就不是原生的写作网页方式,加个 lib 让她更好不为过吧XD最后要提的一点是,ajax 跟 framework 没什么关系,XHR 是标准的东西~简而言之,就“我的观点”,PHP 自己加的这层反而容易让新手搞混网页程式的一些基本的东西。
作者: s25g5d4 (function(){})()   2014-11-13 16:58:00
用 template 语言写出来的 template 引擎写另外一套 template 这就是 PHP XD

Links booklink

Contact Us: admin [ a t ] ucptt.com