Ð Ð´Ð°Ð½Ð¾Ð¼Ñ ÑоздÑÐ»Ñ ÑозглÑнемо Ñк ÑÑвоÑиÑи Ð½Ð¾Ð²Ñ ÑÑоÑÑÐ½ÐºÑ Ð· надпиÑом "ÐÑивÑÑ". У пÑоÑеÑÑ Ð²Ð¸ÑÑÑÐµÐ½Ð½Ñ Ð·Ð°Ð´Ð°ÑÑ Ð²Ð¸ ÑÑвоÑиÑе дÑÑ ÐºÐ¾Ð½ÑÑолеÑа Ñ Ð¿ÑедÑÑавленнÑ:
Ð Ð´Ð°Ð½Ð¾Ð¼Ñ ÐºÐµÑÑвниÑÑÐ²Ñ Ð²Ð¸ дÑзнаÑÑеÑÑ Ñк:
ÐÐ»Ñ Ð½Ð°ÑÐ¾Ñ Ð·Ð°Ð´Ð°ÑÑ Ð·Ð½Ð°Ð´Ð¾Ð±Ð¸ÑÑÑÑ Ð´ÑÑ say
, Ñка зÑиÑÑÑ
паÑамеÑÑ message
Ñз запиÑÑ Ñ Ð²ÑдобÑÐ°Ð¶Ð°Ñ Ð¹Ð¾Ð³Ð¾ знаÑÐµÐ½Ð½Ñ ÐºÐ¾ÑиÑÑÑваÑÑ. ЯкÑо в запиÑÑ
вÑдÑÑÑнÑй паÑамеÑÑ message
, Ñо дÑÑ Ð±Ñде вÑдобÑажаÑи "ÐÑивÑÑ".
ÐнÑоÑмаÑÑÑ: ÐÑÑ ÑвлÑÑÑÑÑÑ Ð¾Ð±âÑкÑами, на ÑÐºÑ ÐºÐ¾ÑиÑÑÑÐ²Ð°Ñ Ð¼Ð¾Ð¶Ðµ поÑилаÑиÑÑ Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ. ÐÑÑ Ð·Ð³ÑÑÐ¿Ð¾Ð²Ð°Ð½Ñ Ð² конÑÑолеÑи. РезÑлÑÑаÑом Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð´ÑÑ Ñ Ð²ÑдповÑдÑ, ÑÐºÑ Ð¾ÑÑимÑÑ ÐºÐ¾ÑиÑÑÑваÑ.
ÐÑÑ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð¾Ð³Ð¾Ð»Ð¾ÑÑваÑиÑÑ Ð² конÑÑолеÑаÑ
. ÐÐ»Ñ Ð¿ÑоÑÑоÑи, ви можеÑе
оголоÑиÑи дÑÑ say
в Ñже наÑÐ²Ð½Ð¾Ð¼Ñ ÐºÐ¾Ð½ÑÑолеÑÑ SiteController
, Ñкий визнаÑений
Ñ ÑÐ°Ð¹Ð»Ñ ÐºÐ»Ð°ÑÑ controllers/SiteController.php
:
<?php
namespace app\controllers;
use yii\web\Controller;
class SiteController extends Controller
{
// ...наÑвний код...
public function actionSay($message = 'ÐÑивÑÑ')
{
return $this->render('say', ['message' => $message]);
}
}
Ð Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¾Ð¼Ñ ÐºÐ¾Ð´Ñ Ð´ÑÑ say
визнаÑена Ñк меÑод actionSay
в клаÑÑ SiteController
.
Yii викоÑиÑÑовÑÑ Ð¿ÑеÑÑÐºÑ action
Ð´Ð»Ñ Ñого, Ñоб вÑдÑÑзнÑÑи меÑоди-дÑÑ Ð²Ñд звиÑайниÑ
меÑодÑв Ñ ÐºÐ»Ð°ÑÑ ÐºÐ¾Ð½ÑÑолеÑÑ.
Ðазва пÑÑÐ»Ñ Ð¿ÑеÑÑкÑа action
вважаÑÑÑÑÑ ÑденÑиÑÑкаÑоÑом вÑдповÑÐ´Ð½Ð¾Ñ Ð´ÑÑ.
Ðоли ÑеÑга доÑ
одиÑÑ Ð´Ð¾ ÑменÑÐ²Ð°Ð½Ð½Ñ Ð´Ñй, ÑлÑд ÑозÑмÑÑи Ñк Yii поводиÑÑÑÑ Ð· ÑденÑиÑÑкаÑоÑами дÑй. ÐденÑиÑÑкаÑоÑи дÑй можÑÑÑ
бÑÑи лиÑе в нижнÑÐ¾Ð¼Ñ ÑегÑÑÑÑÑ. ЯкÑо ÑденÑиÑÑкаÑÐ¾Ñ ÑкладаÑÑÑÑÑ Ð· декÑлÑкоÑ
ÑлÑв, вони зâÑднÑÑÑÑÑÑ Ð´ÐµÑÑÑами
(напÑиклад, create-comment
). Ðмена меÑодÑв дÑй оÑÑимÑÑÑÑÑÑ ÑлÑÑ
ом Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð´ÐµÑÑÑÑв з ÑденÑиÑÑкаÑоÑа,
пеÑеÑвоÑÐµÐ½Ð½Ñ Ð¿ÐµÑÑÐ¾Ñ Ð»ÑÑеÑи кожного Ñлова Ñ Ð²ÐµÑÑ
нÑй ÑегÑÑÑÑ Ñ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿ÑеÑÑкÑа action
. ÐапÑиклад,
ÑденÑиÑÑкаÑÐ¾Ñ Ð´ÑÑ create-comment
вÑдповÑÐ´Ð°Ñ Ð¼ÐµÑÐ¾Ð´Ñ actionCreateComment
.
ÐеÑод дÑÑ Ñ Ð½Ð°ÑÐ¾Ð¼Ñ Ð¿ÑÐ¸ÐºÐ»Ð°Ð´Ñ Ð¿ÑÐ¸Ð¹Ð¼Ð°Ñ Ð¿Ð°ÑамеÑÑ $message
, Ñкий за замовÑÑваннÑм визнаÑено Ñк "ÐÑивÑÑ"
(Ñак Ñамо,
Ñк ви звикли визнаÑаÑи знаÑÐµÐ½Ð½Ñ Ð·Ð° замовÑÑваннÑм Ð´Ð»Ñ Ð°ÑгÑменÑÑв ÑÑнкÑÑÑ Ñ PHP). Ðоли додаÑок
оÑÑимÑÑ Ð·Ð°Ð¿Ð¸Ñ Ñ Ð²Ð¸Ð·Ð½Ð°ÑаÑ, Ñо дÑÑ say
вÑдповÑÐ´Ð°Ñ Ð·Ð° його опÑаÑÑваннÑ, додаÑок пÑизнаÑаÑ
ÑÑÐ¾Ð¼Ñ Ð¿Ð°ÑамеÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ð¾Ð´Ð½Ð¾Ð¹Ð¼ÐµÐ½Ð½Ð¾Ð³Ð¾ паÑамеÑÑа Ñз запиÑÑ. ÐнÑими Ñловами, ÑкÑо Ð·Ð°Ð¿Ð¸Ñ Ð¼ÑÑÑиÑÑ
паÑамеÑÑ message
Ð·Ñ Ð·Ð½Ð°ÑеннÑм "Ðо побаÑеннÑ"
, Ñо змÑннÑй $message
вÑеÑÐµÐ´Ð¸Ð½Ñ Ð´ÑÑ Ð±Ñде пÑизнаÑено Ñе знаÑеннÑ.
ÐÑеÑÐµÐ´Ð¸Ð½Ñ Ð¼ÐµÑода дÑÑ, Ð´Ð»Ñ Ð²ÑдобÑÐ°Ð¶ÐµÐ½Ð½Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ Ð· ÑмâÑм say
, викоÑиÑÑовÑÑÑÑÑÑ Ð¼ÐµÑод
render(). ÐÐ»Ñ Ñого, Ñоб вивеÑÑи повÑдомленнÑ,
Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿ÐµÑедаÑÑÑÑÑ Ð¿Ð°ÑамеÑÑ message
. РезÑлÑÑÐ°Ñ ÑоÑмÑÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²ÐµÑÑаÑÑÑÑÑ Ð¼ÐµÑодом дÑÑ. Цей ÑезÑлÑÑÐ°Ñ Ð¿ÑиймаÑÑÑÑÑ
додаÑком Ñа вÑдобÑажаÑÑÑÑÑ ÐºÑнÑÐµÐ²Ð¾Ð¼Ñ ÐºÐ¾ÑиÑÑÑваÑÑ Ð² бÑаÑзеÑÑ (Ñк ÑаÑÑина ÑÑÐ»Ð¾Ñ HTML-ÑÑоÑÑнки).
ÐÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ Ñ ÑкÑипÑами, ÑÐºÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑÑÑÑÑ Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑÑÐ²Ð°Ð½Ð½Ñ Ð²Ð¼ÑÑÑÑ Ð²ÑдповÑдÑ.
ÐÐ»Ñ Ð½Ð°Ñого додаÑÐºÑ Ð²Ð¸ ÑÑвоÑиÑе пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ say
, Ñке бÑде виводиÑи паÑамеÑÑ message
, оÑÑиманий Ñз меÑÐ¾Ð´Ñ Ð´ÑÑ:
<?php
use yii\helpers\Html;
?>
<?= Html::encode($message) ?>
ÐÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ say
мÑÑиÑÑ Ð±ÑÑи збеÑежено Ñ ÑÐ°Ð¹Ð»Ñ views/site/say.php
. Ðоли меÑод render()
викликаÑÑÑÑÑ Ð² дÑÑ, вÑн бÑде ÑÑкаÑи PHP-Ñайл з ÑмâÑм Ð²Ð¸Ð´Ñ views/ControllerID/ViewName.php
.
ÐаÑÑо зазнаÑиÑи, Ñо Ñ Ð²Ð¸ÑезазнаÑÐµÐ½Ð¾Ð¼Ñ ÐºÐ¾Ð´Ñ Ð¿Ð°ÑамеÑÑ message
екÑанÑÑÑÑÑÑ Ð´Ð»Ñ HTML
пеÑед вÑдобÑаженнÑм. Це обовâÑзково, бо паÑамеÑÑ Ð¿ÑиÑ
одиÑÑ Ð²Ñд коÑиÑÑÑваÑа, коÑÑий може ÑпÑобÑваÑи пÑовеÑÑи
XSS аÑакÑ,
ÑлÑÑ
ом вÑÑавки небезпеÑного JavaScript кода.
Ðи можеÑе доповниÑи пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ say
HTML-Ñегами, ÑекÑÑом або кодом PHP.
ФакÑиÑно, пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ say
Ñ Ð¿ÑоÑÑим PHP-ÑкÑипÑом, Ñкий виконÑÑÑÑÑÑ Ð¼ÐµÑодом render().
ÐмÑÑÑ, Ñкий ÑоÑмÑÑÑÑÑÑ ÑкÑипÑом пÑедÑÑавленнÑ, бÑде пеÑедано додаÑком коÑиÑÑÑваÑÑ.
ÐÑÑÐ»Ñ ÑÑвоÑÐµÐ½Ð½Ñ Ð´ÑÑ Ñ Ð¿ÑедÑÑавленнÑ, ви можеÑе пеÑейÑи на Ð½Ð¾Ð²Ñ ÑÑоÑÑÐ½ÐºÑ Ð¿Ð¾ наÑÑÑÐ¿Ð½Ð¾Ð¼Ñ URL:
http://hostname/index.php?r=site%2Fsay&message=ÐÑивÑÑ+ÑвÑÑ
ÐÑде вÑдобÑажена ÑÑоÑÑнка з надпиÑом "ÐÑивÑÑ ÑвÑÑ". Ðона викоÑиÑÑовÑÑ ÑÑ Ð¶ ÑÐ°Ð¿ÐºÑ Ñа ÑÑÑеÑ, Ñо Ñ ÑеÑÑа ÑÑоÑÑнок додаÑка.
ЯкÑо ви не вкажеÑе паÑамеÑÑ message
в URL, Ñо побаÑиÑе на ÑÑоÑÑнÑÑ Ð»Ð¸Ñе "ÐÑивÑÑ". Це вÑдбÑваÑÑÑÑÑ ÑомÑ, Ñо message
пеÑедаÑÑÑÑÑ Ñк паÑамеÑÑ Ð² меÑод actionSay()
, а коли вÑн не вказаний,
викоÑиÑÑовÑÑÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ð·Ð° замовÑÑваннÑм "ÐÑивÑÑ".
ÐнÑоÑмаÑÑÑ: Ðова ÑÑоÑÑнка викоÑиÑÑовÑÑ ÑÑ Ð¶ ÑÐ°Ð¿ÐºÑ Ñа ÑÑÑеÑ, Ñо й ÑеÑÑа ÑÑоÑÑнок, ÑÐ¾Ð¼Ñ Ñо меÑод render() авÑомаÑиÑно пÑдÑÑавлÑÑ ÑезÑлÑÑÐ°Ñ ÑоÑмÑÐ²Ð°Ð½Ð½Ñ Ð¿ÑедÑÑавленнÑ
say
в, Ñак званий, макеÑ, Ñкий в Ð´Ð°Ð½Ð¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ ÑозмÑÑено Ñviews/layouts/main.php
.
ÐаÑамеÑÑ r
Ñ Ð²Ð¸ÑезазнаÑÐµÐ½Ð¾Ð¼Ñ URL поÑÑебÑÑ Ð´Ð¾Ð´Ð°ÑковиÑ
поÑÑненÑ. ÐÑн вказÑÑ Ð¼Ð°ÑÑÑÑÑ, Ñо ÑвлÑÑ ÑÐ¾Ð±Ð¾Ñ ÑнÑкалÑний Ð´Ð»Ñ Ð´Ð¾Ð´Ð°Ñка ÑденÑиÑÑкаÑоÑ,
Ñкий вказÑÑ Ð½Ð° дÑÑ. Ðого ÑоÑÐ¼Ð°Ñ ControllerID/ActionID
. Ðоли додаÑок оÑÑимÑÑ Ð·Ð°Ð¿Ð¸Ñ,
вÑн пеÑевÑÑÑÑ Ñей паÑамеÑÑ Ñ, викоÑиÑÑовÑÑÑи ÑаÑÑÐ¸Ð½Ñ ControllerID
, визнаÑÐ°Ñ Ñкий конÑÑолеÑ
ÑлÑд викоÑиÑÑовÑваÑи Ð´Ð»Ñ Ð¾Ð¿ÑаÑÑÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸ÑÑ. ÐоÑÑм, конÑÑÐ¾Ð»ÐµÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑ ÑаÑÑÐ¸Ð½Ñ ActionID
,
Ñоб визнаÑиÑи ÑÐºÑ Ð´ÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑваÑи Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑеалÑÐ½Ð¾Ñ ÑобоÑи. РнаÑÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ Ð¼Ð°ÑÑÑÑÑ site/say
бÑде вÑдповÑдаÑи конÑÑолеÑÑ SiteController
Ñ Ð¹Ð¾Ð³Ð¾ дÑÑ say
. Ð ÑезÑлÑÑаÑÑ,
Ð´Ð»Ñ Ð¾Ð¿ÑаÑÑÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð±Ñде викликано меÑод SiteController::actionSay()
.
ÐнÑоÑмаÑÑÑ: Як Ñ Ð´ÑÑ, конÑÑолеÑи Ñакож маÑÑÑ ÑденÑиÑÑкаÑоÑи, коÑÑÑ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñно визнаÑаÑÑÑ ÑÑ Ð² додаÑкÑ. ÐденÑиÑÑкаÑоÑи конÑÑолеÑÑв викоÑиÑÑовÑÑÑÑ ÑÑ Ð¶ ÑÐ°Ð¼Ñ Ð¿Ñавила ÑменÑваннÑ, Ñо Ñ ÑденÑиÑÑкаÑоÑи дÑй. Ðмена клаÑÑв конÑÑолеÑÑв оÑÑимÑÑÑÑÑÑ ÑлÑÑ Ð¾Ð¼ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð´ÐµÑÑÑÑв з ÑденÑиÑÑкаÑоÑа, пеÑеÑвоÑÐµÐ½Ð½Ñ Ð¿ÐµÑÑÐ¾Ñ Ð»ÑÑеÑи кожного Ñлова Ñ Ð²ÐµÑÑ Ð½Ñй ÑегÑÑÑÑ Ñ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð² кÑнеÑÑ Ñлова
Controller
. ÐапÑиклад, ÑденÑиÑÑкаÑÐ¾Ñ ÐºÐ¾Ð½ÑÑолеÑаpost-comment
вÑдповÑÐ´Ð°Ñ ÑÐ¼ÐµÐ½Ñ ÐºÐ»Ð°ÑÑ ÐºÐ¾Ð½ÑÑолеÑаPostCommentController
.
Ð Ð´Ð°Ð½Ð¾Ð¼Ñ ÑоздÑÐ»Ñ Ð²Ð¸ ÑоÑкнÑлиÑÑ ÑакиÑ
ÑаÑÑин ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð¿ÑоекÑÑÐ²Ð°Ð½Ð½Ñ MVC Ñк конÑÑолеÑи Ñа пÑедÑÑавленнÑ.
Ðи ÑÑвоÑили дÑÑ, Ñк ÑаÑÑÐ¸Ð½Ñ ÐºÐ¾Ð½ÑÑолеÑа, Ð´Ð»Ñ Ð¾Ð¿ÑаÑÑÐ²Ð°Ð½Ð½Ñ ÑпеÑиÑÑÑного запиÑÑ. Ð Ñакож ви ÑÑвоÑили пÑедÑÑавленнÑ
Ð´Ð»Ñ ÑоÑмÑÐ²Ð°Ð½Ð½Ñ Ð²Ð¼ÑÑÑÑ Ð²ÑдповÑдÑ. Ð ÑÑÐ¾Ð¼Ñ Ð¿ÑоÑеÑÑ Ð½ÑÑк не викоÑиÑÑовÑвалаÑÑ Ð¼Ð¾Ð´ÐµÐ»Ñ, оÑкÑлÑки в ÑÐ¾Ð»Ñ Ð´Ð°Ð½Ð¸Ñ
виÑÑÑÐ¿Ð°Ñ ÑÑлÑки пÑоÑÑий паÑамеÑÑ message
.
Також ви ознайомилиÑÑ Ñз конÑепÑÑÑÑ Ð¼Ð°ÑÑÑÑÑизаÑÑÑ, коÑÑа Ñ ÑполÑÑÐ½Ð¾Ñ Ð»Ð°Ð½ÐºÐ¾Ñ Ð¼Ñж запиÑом коÑиÑÑÑваÑа Ñ Ð´ÑÑÑ ÐºÐ¾Ð½ÑÑолеÑа.
РнаÑÑÑÐ¿Ð½Ð¾Ð¼Ñ ÑоздÑÐ»Ñ Ð²Ð¸ дÑзнаÑÑеÑÑ Ñк ÑÑвоÑиÑи Ð¼Ð¾Ð´ÐµÐ»Ñ Ñа додаÑи Ð½Ð¾Ð²Ñ ÑÑоÑÑÐ½ÐºÑ Ð· HTML-ÑоÑмоÑ.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.