<?php
return [
'elements' => [
'name',
'surname',
'phone' => [
'validators' => ['by']
],
...
],
...
];
<?php
return [
'elements' => [
'name',
'surname',
'phone_by',
...
],
...
];
<?php
return [
'country' => 'by',
'elements' => [
'name',
'surname',
'phone',
...
],
...
];
import json
from django import forms
class SomeForm(forms.Form):
name = forms.CharField(label=u'Name', max_length=25)
def some_view(request):
json_string = request.POST.get('json_data')
form_data = json.loads(json_string)[0]
f = SomeForm(form_data)
if f.is_valid():
name = f.cleaned_data['name']
# ... Работа с данными ...
else:
# ... Обработка ошибки ...
'components' => [
'cache' => [
'class' => 'yii\caching\FileCache',
'cachePath' => '@frontend/runtime/cache' //делаем общий кеш
],
'request' => [
'csrfParam' => '_csrf-myap', //тоже делаем такое же как и на frontend
'cookieValidationKey' => 'nk34HGdd8w6rf', //тоже делаем такое же как и на frontend
],
'urlManagerBackend' => [
'class' => 'yii\web\urlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'baseUrl' => $backEndUrl,
],
return $this->redirect(Yii::$app->urlManagerBackend->createUrl('index'));
$menu = Array( // Предполагалось, что он SQL SELECT
Array('id'=>1,'title'=>'Menu 1', 'parent_id'=>null),
Array('id'=>2,'title'=>'Sub 1.1', 'parent_id'=>1),
Array('id'=>3,'title'=>'Sub 1.2', 'parent_id'=>1),
Array('id'=>4,'title'=>'Sub 1.3', 'parent_id'=>1),
Array('id'=>5,'title'=>'Menu 2', 'parent_id'=>null),
Array('id'=>6,'title'=>'Sub 2.1', 'parent_id'=>5),
Array('id'=>7,'title'=>'Sub Sub 2.1.1', 'parent_id'=>6),
Array('id'=>8,'title'=>'Sub 2.2', 'parent_id'=>5),
Array('id'=>9,'title'=>'Menu 3', 'parent_id'=>null),
);
function has_children($rows,$id) {
foreach ($rows as $row) {
if ($row['parent_id'] == $id)
return true;
}
return false;
}
function build_menu($rows,$parent=0)
{
$result = "<ul>";
foreach ($rows as $row)
{
if ($row['parent_id'] == $parent){
$result.= "<li>{$row[title]}";
if (has_children($rows,$row['id']))
$result.= build_menu($rows,$row['id']);
$result.= "</li>";
}
}
$result.= "</ul>";
return $result;
}
echo build_menu($menu);
<ul>
<li>Menu 1<ul>
<li>Sub 1.1</li>
<li>Sub 1.2</li>
<li>Sub 1.3</li>
</ul></li>
<li>Menu 2<ul>
<li>Sub 2.1<ul>
<li>Sub Sub 2.1.1</li>
</ul></li>
<li>Sub 2.2</li>
</ul></li>
<li>Menu 3</li>
</ul>
def form_invalid(self, form):
form.add_error(None, u'Вы кто такие? Я вас не звал!');
return super(LoginFormView, self).form_invalid(form)
func getOnly(handler HttpHandler) HttpHandler {
return func(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
if r.Method == "OPTIONS" { // Preflight request
origin := r.Header.Get("Origin")
switch origin {
case "http://localhost:8080":
case "http://localhost:8100":
case "https://debtstracker.local":
case "https://debtstracker.io":
case "":
BadRequest(c, w, errors.New("Missing required request header: Origin"))
return
default:
err := errors.New(fmt.Sprintf("Unknown origin: %v", origin))
log.Debugf(c, err.Error())
BadRequest(c, w, err)
return
}
log.Debugf(c, "Request 'Origin' header: %v", origin)
if accessControlRequestMethod := r.Header.Get("Access-Control-Request-Method"); accessControlRequestMethod != "GET" {
BadRequest(c, w, errors.New("Not a valid preflight request"))
return
}
responseHeader := w.Header()
responseHeader.Set("Access-Control-Allow-Methods", "GET")
if accessControlRequestHeaders := r.Header.Get("Access-Control-Request-Headers"); accessControlRequestHeaders != "" {
log.Debugf(c, "Request Access-Control-Request-Headers: %v", accessControlRequestHeaders)
responseHeader.Set("Access-Control-Allow-Headers", accessControlRequestHeaders)
} else {
log.Debugf(c, "Request header 'Access-Control-Allow-Headers' is empty or missing")
// TODO(security): Is it wrong to return 200 in this case?
}
responseHeader.Set("Access-Control-Allow-Origin", origin)
w.WriteHeader(200)
return
}
if r.Method != "GET" {
BadRequest(c, w, errors.New(fmt.Sprintf("Expecting to get request method GET, got: %v", r.Method)))
return
}
handler(w, r)
}
}
function makeGoogleApiRequest($params)
{
$apiUrl = "https://maps.googleapis.com/maps/api/geocode/json";
$context = stream_context_create(['http'=>['timeout'=>5]]);
// Make request
$response = json_decode(file_get_contents($apiUrl . "?" . http_build_query($params), false, $context));
// Check response
if (
json_last_error() ||
!isset($response->status) ||
$response->status !== "OK" ||
!isset($response->results[0]->place_id) ||
!isset($response->results[0]->formatted_address) ||
!isset($response->results[0]->address_components) ||
!isset($response->results[0]->geometry->location->lat) ||
!isset($response->results[0]->geometry->location->lng)
) {
throw new \UnexpectedValueException ("Google Api Request Failed");
}
return $response;
}
/* Пример использования */
$place = makeGoogleApiRequest([
'address' => "Москва, Лаврушинский пер, 10",
'language' => "ru"
]);
//это во view
$this->registerCss('
body {background-color:#fff;}
');
//это во view
$this->registerCssFile('path/to/myfile');
class WorkModelForm(forms.ModelForm):
description = forms.CharField(label='описание', widget=forms.Textarea, required=False)
...
class WorkModelForm(forms.ModelForm):
class Meta:
model = Work
fields = "__all__"
widgets = {
'description': forms.Textarea,
}