Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Тоже бы хотелось понять алгоритм)
Ребзя, что, нет решений данной проблемы?
Может потому, что используется https на том сайте, котором хотите пропарсить?
Продолжаю делать сайт. Дошёл до авторизации.
Контроллер:
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
## Модели
use App\Models\Forum\Forum; // Модель форума
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use Redirect;
class AuthController extends Controller{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $redirectTo = '/';
public function __construct(){
$this->middleware($this->guestMiddleware(), ['except' => 'logout']);
}
protected function validator(array $data){
return Validator::make($data, [
'login_users' => 'required|min:4|max:60',
'mail_users' => 'required|email|min:4|max:255|unique:users',
'password' => 'required|min:6|confirmed:password_confirmation',
'password_confirmation' => 'required|min:6',
'iAgree' => 'accepted'
]);
}
## Страница авторизация
public function getLogin(){
return view('Auth.getLogin');
}
public function postLogin(Request $request){
$data = $request->all();
$dataSave = $request->flashExcept('password');
$v = $this->validator($data);
if($v->fails()){
// Если есть ошибки
return redirect()->back()->withErrors($v->errors())->withInput($dataSave);
}else{
}
}
}
Дизайн:
<div class="control-group {{($errors->first('login_users') ? 'error' : '')}}">
<label class="control-label" for="login_users">Логин:</label>
<div class="controls">
{{ Form::text('login_users', '', ['placeholder' => 'Введите ваш логин']) }}
<span class="help-inline">{{($errors->first('login_users') ? $errors->first('login_users') : '')}}</span>
</div>
</div>
<div class="control-group {{($errors->first('password') ? 'error' : '')}}">
<label class="control-label" for="password">Пароль:</label>
<div class="controls">
{{ Form::password('password', ['placeholder' => 'Введите ваш пароль']) }}
<span class="help-inline">{{($errors->first('password') ? $errors->first('password') : '')}}</span>
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" class="btn btn-success">Войти</button>
</div>
</div>
Всё вроде работает, но вот к паролю пишется ошибка, мол пароль не совпадает. Что делать?
Ух, как всё сложно))) Теперь опять хочу на L4)
Спасибо)
Ох, ребзя, решил всё таки перейти на L5. Сделал только регу, а гемороя столько было с путями. Уже хз что будет, если проект разрастётся...
Суть:
Я привык к старому, доброму L4. Теперь мне эти "use", неймспейсы, совсем в гроб заведут. Как лучше настроить всё, что бы было как в L4?
Например, сейчас я к роуту пишу так:
Route::get('auth/login', ['as' => 'auth.login', 'uses' => 'Auth\AuthController@getLogin']);
Auth, соответственно, папка внутри папки контроллеров.
В модели пишут аж так:
\Models\Forum\Forum::createUser()....
Создал папку для моделей (так мне удобнее)...находится App/Models/Forum/... А если нужно будет больше вложений!?
PS: Читал, мол можно решить проблему - добавляя алиасов в app.php. Но как по мне - это не есть хорошо.
Может у вас как нить по другому!? За ответы заранее благодарю!)
Благодарю за ответ. Чтож, переходим'с)
Всем привет! Хочу перейти на Laravel 5 и PHP7. Хотелось бы узнать, есть ли в Laravel'е поддержка PHP7?
Понятно, а что на счёт отправки JS? Есть мысль как исправить?
Доброго времени суток! Начал делать отправку сообщения по AJAX (jQuery), но выходит ошибка 200, а так же информация о том, что это не JSON (php).
Контроллер:
class PostsController extends BaseController{
public function jsonPosts(){
if(Request::ajax()){
// Если это Ajax запрос
if(Request::isJson()){
// Если это JSON
echo 'JSON';
}else{
// Если это не JSON
echo 'Not JSON'; <=================== Всегда выходит
}
}else{
// Если это не Ajax запрос
echo 'Not AJAX';
}
}
}
Роут:
Route::post('posts/addpost', ['as' => 'jsonPosts', 'uses' => 'PostsController@jsonPosts']);
Шаблон:
<div class="brd">
{{Form::token()}}
{{Form::textarea('text_posts', '', ['class' => 'grid12', 'id' => 'addPosts', 'placeholder' => Lang::get('site.pages.home.posts.addPosts.placeholder'), 'style' => 'resize: none;', 'rows' => '3'])}}
<div class="fl" id="statusInfo"></div>
{{Form::button(Lang::get('site.pages.home.posts.addPosts.button'), ['type' => 'submit', 'class' => 'btn btn-success fr', 'onclick' => 'Posts.addPosts()'])}}
<div class="clearfix"></div>
</div>
JS:
function Posts(){
this.addPosts = function(){
var textPost = $("#addPosts").val();
var countTextPost = textPost.length;
var statusInfo = $("#statusInfo");
if(countTextPost < 1){
$(statusInfo).html('<div class="text-info">Вы не ввели ни чего!</div>');
}else if(countTextPost < 5){
$(statusInfo).html('<div class="text-info">Слишком мало символов!</div>');
}else if(countTextPost >= 5){
$(statusInfo).html('<div class="text-success">Всё готово!</div>');
$.ajax({
url: 'posts/addpost',
type: 'POST',
dataType: 'json',
data: {"textPost": "textPost"},
complete: function(xhr, textStatus){
//called when complete
console.log(xhr);
},
success: function(data, textStatus, xhr){
//called when successful
console.log('Success');
},
error: function(xhr, textStatus, errorThrown){
//called when there is an error
console.log('Error');
}
});
}
};
}
var Posts = new Posts();
Уже какой час бьюсь об стену, помогите пожалуйста!
И ещё один вопрос, а как сделать CSRF защиту при AJAX?
Всем привет!
Суть ошибки такова: При регистрации хочу отправить E-Mail сообщение пользователю, с теми данными, которые я получаю при регистрации. Но выходит следующая ошибка:
Undefined variable: dataMail
Код контроллера:
$data = Input::all(); // Получаем все данные с формы
// Какой-то код
...
// Если всё успешно - отправляем на почту данные
MailGun::mailActivations(['login_users' => $data['login_users'], 'mail_users' => $data['mail_users'], 'code' => $setMailActivation], true);
Код модели:
class MailGun extends Eloquent{
/**
* Отправка E-Mail для активации аккаунта
* @param array $dataMail [Данные для отправки]
* @param boolean $method [Использовать очередь (false) или нет (true)]
*/
public static function mailActivations(array $dataMail, $method = false){
if($method == true){
Mail::send('Mails.activations', $dataMail, function($message){
$message->to($dataMail['mail_users'])->subject('Активация аккаунта!'); // Кому
$message->from('AutoBot@minesoulproject.ru', 'MSP.Ru'); // От кого
});
}else{
// Отправлять с задержкой
Mail::queue('Mails.activations', $dataMail, function($message){
$message->to($dataMail['mail_users'])->subject('Активация аккаунта!'); // Кому
$message->from('AutoBot@minesoulproject.ru', 'MSP.Ru'); // От кого
});
}
}
}
Не подскажите как исправить?
Решено! Использование "protected $primaryKey = 'id_users'" в модели User помогло.
А использование в модели User.php "protected $primaryKey = 'id_users';" (соответсвенно смены имени таблицы в БД) поможет решить мою задачу7
К сожалению не смог исправить текст сообщения, так что сейчас добавлю: Таблицу от плагина я не могу трогать, так как сервер обращается к полю "id". Так что или переписывать плагин, или же сделать так, что бы работа с пользователями в Laravel велась по полю "id_users" (например) вместа "id".
Ребят, не знаю больше куда ещё писать...
Столкнулся с проблемой - пишу свой сайт на Laravel со связкой игрового сервера Minecraft. Все плагины подключены к MySQL. Для работы с пользователями требуется обязательное имя поля id - "id" (это в Laravel). В плагине, при подключении к MySQL, поле идентификатор (id) имеет тоже такое же название - "id" (iConomy). При работе на сайте, я заметил, что при использование SQL функции "join" происходит ошибка, мол поля "id" одинаковые. Собственно вопрос: Как изменить поле, по которому работает плагин iConomy!?
Для информации:
PHP Framework: Laravel 4.x,
Iconomy: Iconomy 6.
Заранее спасибо!
Почему здесь пишут только дегинераты? я то думал будет что-то полезное на форуме, а тут люди которые даже инструкцию ленятся прочесть...
php artisan down... и будет твое приложение выключено
При чём тут инструкция? Я просил помощи по моему коду, а не про функцию artisan. И вы назвали меня дегинератом, при том, что сами даже не дочитали (скорей всего) мой пост...
Всем привет. Делаю сайт и столкнулся с одной проблемой. Нужно сделать так, что бы появлялась страница сайт выключен если в конфигах указано что сайт выключен.
Пробовал сувать в "app\start\global.php" модель "Engine:siteOffline();", но страница ошибки не показывалась.
Код модели:
public static function siteOnline(){
/**
* Включён ли сайт
*/
$online = Config::get('config.engine.online');
if($online['online'] == false){
// Если сайт выключен
return View::make('errors.offline')->with('offline', $online);
}
}
Модель то рабочая, но почему-то не срабатывает, а именно не показывается шаблон.
Попробовал запихать в filters.php (просто совсем хз что делать), но у меня не подгружаются картинки, а они нужны.
Может кто подскажет, а!?
Всё, разобрался. Нужно было в консоле сервера написать "sudo a2enmod rewrite". И перезапустить Apache.
Суть темы такова: Перенёс свой сайт на виртуальную машину под ОС Ubuntu 14.04. Перехожу на главную страницу сайта - всё нормально, но если заходить на другой любой роут - выкидывает ошибку 404: "Not Found. The requested URL /login was not found on this server." Если использовать URL следующим образом, то будет всё нормально: "сайт.ру/index.php/login".
Что делать, подскажите пожалуйста!)
dima9595 пишет:В 4 Laravel'е есть такая функция!
Она то есть, но работает совсем не так как в 5. https://laravel-news.com/2014/12/larave … s-upgrade/
там появилась подсветка, можно складывать массивы, раскладывать.
Ну что нет, того и нет. Попробуйте через функцию print_r() вызывать то, что нужно. Так код более понятен. А если ещё к этому использовать HTML теги pre и code, то вообще загляденье)
Решил на днях проверить данную ошибку на многих сайтах - у всех работает так же. Т.е. нет ни какой проверки на кол. слэшей, так что не переживайте.
"И как сделать так, чтобы в конце URL на категории (если она не имеет расширения .html) доставлялся закрывающийся слэш, показывающий, что там содержаться статьи?"
Я не знаю точно как в Laravel это можно сделать, но попробуйте поработать с .htaccess.
Коль разобрался - просвети нас!)
В 4 Laravel'е есть такая функция!
dima9595, Вам нужно где-то в отдельно блоке указать, есть ли posts? Или если есть, то вывести их, а если нет, то вывести "Постов нет"?
Если так, то в blade можно сделать так:@forelse( $posts as $post ) {{-- Выводим тут данные, если есть --}} @empty <p>Постов нет!</p> @endforelse
Благодарю за совет.
Я сделал так:
@if(isset($posts) AND !$posts->isEmpty())
@foreach($posts as $post)
Вывод постов
@endforeach
@else
Нет постов
@endif
Благодарю за помощь!