Задать вопрос
  • Почему при отправке формы ошибка Missing parameter: category?

    yesbro
    @yesbro
    Думаю, помогаю думать
    Где то у тебя на странице admin/category есть вызов роута редактирования категории без нужного параметра.
    Ответ написан
    2 комментария
  • Почему не сбрасывается кеш шаблона Blade при его изменении?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Если посмотреть в исходник блэйд-компилятора, то видно, что актуальность кэша проверяется по времени изменения файла (не его хэшу)

    public function isExpired($path)
        {
            // ...
            return $this->files->lastModified($path) >=
                   $this->files->lastModified($compiled);
        }
    public function lastModified($path)
        {
            return filemtime($path);
        }


    И тогда можно сделать вывод, что ваш FTP клиент не изменяет время модификации файла при его загрузке. Точнее говоря, он предотвращает изменение этой метки (устанавливает исходную).

    В шторме для этого есть опция "Preserve files timestamp" в разделе
    File | Settings | Build, Execution, Deployment | Deployment | Options

    небольшой секретик
    В любой непонятной ситуации – читай исходники. Там намного больше инфы, чем в документациях. =)
    Ответ написан
    4 комментария
  • Как убрать верхние Label и input при выводе $form->field()->checkboxList()?

    toratoda
    @toratoda
    чтоб убрать label : ->label(false)
    чтоб убрать input: ->checkboxList($items, ['unselect'=>false])
    чтоб добавить legend лучше унаследовать свой ActiveField в котором подменить функцию
    public function label($label = null, $options = [])
    чтоб она рендерила legend и указать этот новый класс в форме.
    Ответ написан
    Комментировать
  • В чем ошибка при добавлении даты в mysql?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Ошибка в том, что to_date - это Oracle, а не MySQL: www.sqlines.com/mysql/functions/str_to_date
    STR_TO_DATE('05-09-2019 17:02:14', '%d-%m-%Y %H:%i:%s')
    Ответ написан
    Комментировать
  • Что означат & в PHP?

    bitniks
    @bitniks
    Go/PHP/Symfony developer
    Присвоение по ссылке. Создается экземпляр класса OLERead и ссылка на этот экземпляр записывается в переменную. Наверное, это имело какой-то смысл в PHP 4, но в PHP 5 и выше все объекты присваиваются по ссылке по умолчанию. C 5 версии PHP конструкция =& deprecated, а в PHP 7 выдает ошибку
    https://www.php.net/manual/ru/language.references....
    Ответ написан
    3 комментария
  • В чем разница между namespace и use? И как они связаны с файловой системой?

    @AlikDex
    попытаюсь более человечнее написать =)

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

    namespace это установка пространства имен. Скажем так - виртуальная коробочка, в которой лежат всякие штуки (классы). Это дает возможность использовать одинаковые названия классов для одного приложения.

    use указывает какой класс из какого пространства имен использовать. Его можно не писать, но тогда придется вызывать классы вместе с их namespace (если у тех классов они заданы, если нет, то все равно надо указывать глобальное пространство "\").
    типа: $customers = new \app\models\Customers();

    а с use будет:
    <?php
    namespace app;
    use app\models\Customers;
    
    $customers = new Customers();
    
    $imagick = new \Imagick(); // вызов из глобала. обратный слеш нужен когда указан какой-либо неймспейс для этого файла. Иначе попытается вызвать из текущего пространства, что приведет соотвественно к ошибке.


    В мануале все четко расписано в принципе, читай и пытайся понять =)
    Ответ написан
    Комментировать
  • В чем разница между namespace и use? И как они связаны с файловой системой?

    @MadridianFox
    Web-программист, многостаночник
    На уровне языка пространства имён с файловой системой никак не связаны.
    Пространства имён - лишь способ решить конфликты имён классов.
    Вот ты говоришь - у меня есть класс ClassName, но к сожалению, такой класс уже есть в одной из библиотек, которые ты используешь. Можно было бы назвать класс MyClassName, ну и везде добавлять приставку My. Редко, но бывает что надо сделать два класса с одинаковым именем в одном проекте. Тогда ты называешь один класс MyBananaSybsystemClassName, а другой MyAnanasSubsystemClassName - тем самым обозначая разницу в названии.
    И даже это не спасёт от простого совпадения.

    И тут на помощь приходят пространства имён.
    В начале файла в котором лежат классы (лучше один класс в одном файле) пишется название пространсва имён, вот так:
    namespace banana;
    И теперь все классы, объявленные в этом пространстве имён имеют название banana\ClassName, хотя внутри этого файлв ты можешь по прежнему обращаться к ним просто по ClassName.
    В другом файле надо использовать полное название, вроде как:
    $obj = new banana\ClassName();
    но, если надо много раз писать название класса можно сделать вот так:
    use banana\ClassName;
    $obj = new ClassName();

    , но самое полезное здесь это разрешение конфликтов. Если вдруг в другом месте определён такой же ClassName, то можно просто переименовать его:
    use banana\ClassName;
    use ananas\ClassName as AnanasClass;
    $obj1 = new ClassName();
    $obj2 = new AnanasClass();


    Вот это и есть суть пространства имён. Таковы они во всех языках программирования в которых они есть.
    Но есть от них ещё одна польза - можно настроить автоматическое подключение unclude(); файла с классом.
    Делается это с помощью определения функции автозагрузки
    function __autoload($classname){
    // как-то по имени класса находим файл и подключаем
    }
    // или, лучше
    spl_autoload_register(function ($classname) {
       // как-то по имени класса находим файл и подключаем
    });


    Каждый раз, когда ты обращаешься к классу и php не может его найти в подключенных файлах - запускается код написанный в функции автозагрузки. В эту функцию передаётся название класса.
    При чём же тут пространства имён? А при том, что в функцию автозагрузки передаётся полное имя класса с пространтсвом имён.
    Это значит что ты можешь делать по одному файлу на класс, класть их в папки, а в пространство имён в каждом файле писать путь до этого файла.
    После этого пишешь функцию, которая просто заменяет в названии класса слеши на те, что поддерживаются операционной системой как разделители пути, и просто подключаешь файл.
    Именно об этом и написано в каком-то там PSR
    Ответ написан
    2 комментария
  • Как при загрузке страницы опускать её в самый низ?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    jsfiddle.net/iiil/ryZq7

    window.onload=function(){
         window.scrollTo(0,document.body.scrollHeight);
    }
    Ответ написан
    1 комментарий
  • Какая разница между CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR в curl?

    glebovgin
    @glebovgin
    Full Stack Web Developer
    CURLOPT_COOKIEJAR - файл, куда пишутся куки после закрытия коннекта, например после curl_close()
    CURLOPT_COOKIEFILE - файл, откуда читаются куки.

    Так что используйте оба параметра, не ошибетесь.
    Но вообще документация - сильная штука.
    Ответ написан
    Комментировать
  • Как с помощью curl отправить POSTзапрос?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый день.
    Возможно так будет работать?
    // Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, 'https://integration.cdek.ru/new_orders.php');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "xml_request=<?xml version=\"1.0\" encoding=\"UTF-8\" ?><DeliveryRequest Number=\"0000033876WO\" Date=\"2019-04-25T09:09:57\" Account=\"2JewP7QZL***********z8NCbIIbKAw2\" Secure=\"db25*********360f3c64b70\" OrderCount=\"1\"><Order Number=\"123485\" SendCityPostCode=\"350000\" RecCityPostCode=\"350000\" RecipientName=\"Герусов Александр Валерьевич\" RecipientEmail=\"gerusov14@mail.ru\" Phone=\"89615096005\" TariffTypeCode=\"136\" DeliveryRecipientCost=\"137\" DeliveryRecipientVATRate=\"VATX\" DeliveryRecipientVATSum=\"0\" SellerName=\"ИП Волженин Е.Г.\" SellerAddress=\"Ленинградская обл, Всеволожский р-н, Пос. Лесное, дом № 18, кв.6\"><Address PvzCode=\"KSD5\"/><Package Number=\"1\" BarCode=\"krd61927-1\" Weight=\"1000\"><Item WareKey=\"158308\" Cost=\"790\" Payment=\"790\" PaymentVATRate=\"VATX\" PaymentVATSum=\"0\" Weight=\"1000\" Amount=\"1\" Comment=\"Кронштейн для телевизора Ultramounts UM 814F черный\"/></Package></Order></DeliveryRequest>");
    curl_setopt($ch, CURLOPT_POST, 1);
    
    $headers = array();
    $headers[] = 'Content-Type: application/x-www-form-urlencoded';
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close ($ch);

    Полезный сервис.
    Ответ написан
    3 комментария
  • Как изменить курсор печати с "_" на " | "?

    usdglander
    @usdglander
    Yipee-ki-yay
    Кнопку insert на клавиатуре найди и нажми её, господи!
    Ответ написан
    Комментировать
  • Как решается такая ошибка Warning: mysqli_connect()?

    @alx0
    Помогло? Отметь решением
    Warning: mysqli_connect(): Headers and client library minor version mismatch. Headers:50173 Library:50312

    Это не ошибка, это ворнинг (предупреждение).
    У вас различаются (минорной версией) php и клиент mysql.
    Чтобы избавиться, можете php перекомпилировать или установить иным способом так, чтобы версии совпадали.
    Ответ написан
    Комментировать
  • PHP simple HTML DOM не могу достать значение атрибута, не понимаю где ошибка?

    @glagolew059
    frontend developer
    Если не ошибаюсь, то этим вы перебираете все tr'ки, и у них пытаетесь атрибут взять
    foreach ($modifications->find('tbody tr') as $k => $size) {
    ...
    }


    Вам нужно, наверное, что-то типо такого:
    foreach ($modifications->find('tbody tr') as $k => $size) {
        $span = $size->find('.data-rim span')[0];
        print_r($span->attr['data-rim']);
    }
    Ответ написан
  • Почему при парсинге сайта, не могу достать некоторые текстовые данные?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Какая конкретно "вся информация" вам нужна? Скорее всего, она генерируется при помощи javascript, поэтому при "выводе на экран" (в браузер, как я подозреваю), вы её видите - там js исполняется, а в curl нет.

    Там есть защита от парсинга, td[class=data-rim aux-table-cell] заполняется через javascript и только с юзер-агентом настоящего браузера.
    <script>
    !function () {
        (function () {
            for (var t = [/PhantomJS/.test(window.navigator.userAgent), /HeadlessChrome/.test(window.navigator.userAgent), navigator.webdriver, window.callPhantom || window._phantom], e = 0; e < t.length; e++) if (t[e]) return !0;
            return !1
        })() || (function () {
            for (var t, e = document.querySelectorAll("span[data-rim]"), r = 0; r < e.length; ++r) {
                var n = e[r], a = n.getAttribute("data-rim");
                n.innerHTML = (t = a) ? atob(function (t) {
                    return t.split("").map(function (t) {
                        return t === t.toUpperCase() ? t.toLowerCase() : t.toUpperCase()
                    }).join("")
                }(t.replace(/-/g, "="))) : t, n.parentNode.classList.add("aux-table-cell")
            }
        }(), function () {
            for (var t = document.querySelectorAll("tbody[data-vehicle]"), e = function (t) {
                return String.fromCharCode(t)
            }, r = 0; r < t.length; ++r) {
                var n = t[r], a = n.getAttribute("data-vehicle");
                a = a.match(/\d{3}/g).map(e).join("");
                for (var o = n.querySelectorAll("tr>td.data-bolt-pattern"), i = 0; i < o.length; ++i) o[i].innerHTML = a
            }
        }())
    }();
    </script>


    Соответственно, вам нужно использовать, например, PhantomJS или Хром в безголовом режиме, но передавать юзер-агент десктопного браузера.
    Ответ написан
    5 комментариев
  • Почему при парсинге сайта, не могу достать некоторые текстовые данные?

    @marxxt
    понравился ответ - поставь ✔
    Интересная задачка

    Смотрите,

    вас интересует блок

    <span data-rim="nI41sNGXnsbfvdqY"></span>

    Информация уже здесь, но сначала закодирована в base64, а потом замаскирована

    Снимаем маскировку:
    nI41sNGXnsbfvdqY -> Ni41SngxNSBFVDQy==

    Декодируем:
    base64_decode("Ni41SngxNSBFVDQy==");

    Получаем:
    6.5Jx15 ET42䀀

    Ну вот и все :)
    Ответ написан
    7 комментариев