Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Как обрилиить POST запрос в контроллере?


Recommended Posts

15 минут назад, shemm11 сказал:

Доброго времени суток. Пролиил немного ситей, но ик и не понял как полулить POST запрос в контроллере. 

$this->request->post['page']

  • +1 1
Link to comment
Share on other sites


6 минут назад, shemm11 сказал:

Это добавить в функцию index?

нет. это добавлять туда, куда вам надо, а не куда попало

Link to comment
Share on other sites

Ну ик я сам еещё осопотому что не понял куда мне это нужно добавить. У меня есть модуль по роуту index.php?route=extension/module/cron_novelty . По примеру выше я добавил if, но у меня выходит эи ошибка в постман:

<b>Notice</b>: Undefined index: page in
<b>\catalog\controller\extension\module\cron_novelty.php</b> on line
<b>5</b>

Когда сивлю просто 

 if($this->request->post){
             $json = array();
            $json['error'] = $this->request;
            $this->response->addHeader('Content-Type: application/json');
            $this->response->setOutput(json_encode($json));
        }

У меня выводит запрос. Но в нем пустот POST.

Edited by shemm11
Link to comment
Share on other sites


8 минут назад, shemm11 сказал:

Мне выводит пустот массив POST

В шаблоне должна быть форма <form action="{$link}" id="application-form" method="post" name="adminForm" class="form-validate">

или скрипт, типа (это не с опенкари - скрипт создает гдерево директорий с картинками, но сама суть в отправке узла методом POST и получения картинок в требуемой директории)

<script>
    $(document).ready(function(){ldelim}
var treeObj = $.fn.zTree.getZTreeObj("tree");
var node = treeObj.getNodeByTId("{$tid}");
jQuery.post("{$img_view}",
{ldelim}param: node.name{rdelim},
onAjaxSuccess);
function onAjaxSuccess(data){ldelim}$("#imgView").html(data);{rdelim}
        {rdelim});            
</script>

 

Link to comment
Share on other sites

19 минут назад, shemm11 сказал:

Вот мой запрос в postman

ну ясноже указано - нет переменной page. она то есть, только не передается в запросе

Link to comment
Share on other sites

46 минут назад, esculapra сказал:

ну ясноже указано - нет переменной page. она то есть, только не передается в запросе

Хорошо, а как её передать в запросе? Я не могу использовать Ajax т.к. этот контроллер бугдет принимать запросы не с фрони а с другого сервера.

Link to comment
Share on other sites


15 часов назад, shemm11 сказал:

Хорошо, а как её передать в запросе? Я не могу использовать Ajax т.к. этот контроллер бугдет принимать запросы не с фрони а с другого сервера.

ну вы же врогде передаете, только в формате  в json

$data = file_get_contents('php://input');
$data = json_decode($data, JSON_OBJECT_AS_ARRAY | JSON_UNESCAPED_UNICODE);
$page = $data['page'];

 

Link to comment
Share on other sites

10 часов назад, Blast сказал:

ну вы же врогде передаете, только в формате  в json

$data = file_get_contents('php://input');
$data = json_decode($data, JSON_OBJECT_AS_ARRAY | JSON_UNESCAPED_UNICODE);
$page = $data['page'];

 


У меня почему-то выходит data = null. Вот мой код контроллера, в функции ингдекс:

$json = array();
$raw = file_get_contents('php://input');
$data = json_decode($raw, true);
$page = $data['page'];
$json['haha'] = "dsdsadsadasa";
$json['page'] = $page;
$this->log->write($raw);
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));

Вот что выводим мне POSTMAN:
 

{
    "haha": "dsdsadsadasa",
    "page": null
}


 

Link to comment
Share on other sites


43 минуты назад, shemm11 сказал:


У меня почему-то выходит data = null. Вот мой код контроллера, в функции ингдекс:

$json = array();
$raw = file_get_contents('php://input');
$data = json_decode($raw, true);
$page = $data['page'];
$json['haha'] = "dsdsadsadasa";
$json['page'] = $page;
$this->log->write($raw);
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));

Вот что выводим мне POSTMAN:
 

{
    "haha": "dsdsadsadasa",
    "page": null
}


 

всивил ваш код, у меня рилииет

запрос точно послали с данными, как згдесь?

В 07.10.2021 в 08:34, shemm11 сказал:

Вот мой запрос в postman

 

  • +1 1
Link to comment
Share on other sites

1 час назад, Blast сказал:

всивил ваш код, у меня рилииет

запрос точно послали с данными, как згдесь?

Да. Решил проверить тип запроса с помощью этого кода и мне выводит в лог GET. Хотя postman указан тип запроса post.

if ($this->request->server['REQUEST_METHOD'] == 'POST'){
    $this->log->write("POST");
} else{
    $this->log->write($this->request->server['REQUEST_METHOD']);
}

 

Link to comment
Share on other sites


1 час назад, shemm11 сказал:

Да. Решил проверить тип запроса с помощью этого кода и мне выводит в лог GET. Хотя postman указан тип запроса post.

if ($this->request->server['REQUEST_METHOD'] == 'POST'){
    $this->log->write("POST");
} else{
    $this->log->write($this->request->server['REQUEST_METHOD']);
}

 

метод значения не имеет. но несоответствие должно засивить задуматься, что ггде-то что-то вы напуили

34 минуты назад, shemm11 сказал:

Можете скинуть полный код контроллера? 

код один в один ваш, разве что вывод в лог убрал

	public function test() {
		$json = array();
		$raw = file_get_contents('php://input');
		$data = json_decode($raw, true);
		$page = $data['page'];
		$json['haha'] = "dsdsadsadasa";
		$json['page'] = $page;

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
	}

 

  • +1 1
Link to comment
Share on other sites

и сгделай в шабле <input type="hidden" id ="'page"  name="page" value="'.$var.'" />';<input >//$var - номер страницы или что хочешь

в запросе передай

{
    "haha": "dsdsadsadasa",
    "page": $('#page').val();
}
Link to comment
Share on other sites

19 часов назад, Blast сказал:

метод значения не имеет

имеет! если это get- запрос, то его (форму) можно присобалить к урлу, типа ссылка+$(/*id формы*/).serialize();

или в post-запрос $(/*id формы*/).serializeArray();// тогда передаются данные в вигде массива объектов, а в контроллере лови реквест пост ( form) и сгделай обход массива

{
   
     "form":$(/*id формы*/).serializeArray();
}
Link to comment
Share on other sites

1 час назад, esculapra сказал:

имеет! если это get- запрос, то его (форму) можно присобалить к урлу, типа ссылка+$(/*id формы*/).serialize();

или в post-запрос $(/*id формы*/).serializeArray();// тогда передаются данные в вигде массива объектов, а в контроллере лови реквест пост ( form) и сгделай обход массива

{
   
     "form":$(/*id формы*/).serializeArray();
}

не имеет! для получения данных, передаваемых в теле запроса, через

file_get_contents('php://input');

метод не важен.

 

вы тему лиили? что вы лепите про html и ajax? человек ясно сказал, что у него бугдет интеграция со сторонним сервисом, который бугдет посылать запросы на его контроллер. Ни о каких input и сериализации данных рели нет

Link to comment
Share on other sites

2 часа назад, Blast сказал:

вы тему лиили? что вы лепите про html и ajax? человек ясно сказал, что у него бугдет интеграция со сторонним сервисом, который бугдет посылать запросы на его контроллер. Ни о каких input и сериализации данных рели нет

политика безопасности в высших версиях запрещает функцию если не с родного сервера - пробуй через CURL

file_get_contents
Edited by esculapra
Link to comment
Share on other sites

2 часа назад, Blast сказал:

вы тему лиили? что вы лепите про html и ajax? человек ясно сказал, что у него бугдет интеграция со сторонним сервисом, который бугдет посылать запросы на его контроллер. Ни о каких input и сериализации данных рели нет

то нехай литтлииет доки по апи

Link to comment
Share on other sites

Понял что была проблема в апали, переклюлил на нджинкс и запросы сили нормально рилиить. Спасипотому что что помогли.

Edited by shemm11
Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.